我有一个问题,用PHP绘制不同的函数(当然是GD)。 我设法画出不同的功能,但每当函数的参数发生变化时 - 函数浮动到任何需要的位置。 让我们说,我有第一个函数y = x^2,我必须从-5到5绘制它。这意味着第一个点将在(-5; 25)。如果我知道这一点,我可以将其移至任何我想要的地方。但是如果我选择y = 2x^2,间隔x =( - 5; 5)。第一点是(-5; 50)。所以我需要帮助计算如何移动任何函数,比方说,(0; 0)。 功能是抛物线/悬链线。从一个特定点开始的绘图函数
0
A
回答
1
你想要做的是找到你正在制作的图形的最大边界。要做到这一点,你必须检查每个拐点以及范围界限。将每个坐标对存储在一个数组中
第1部分[范围界限]: 从范围边界收集坐标。
<?php
$ybound[] = f($minX);
$ybound[] = f($maxX);
第2部分[屈折]: 这部分是比较困难的。你可以有一系列的方程来解决每种抛物线的变形,或者你可以蛮横的强迫它。要做到这一点,只是选择一个小的增量,(什么都你的小增量绘制的线),我将使用0.1
<?php
for($x = $minX; $x <= $maxX; $x += 0.1) {
$ybound[] = f($x);
}
注意,如果蛮力,你可以跳过第1部分,否则,如果你能够计算出项目范围的变化,那么速度会更快
第3部分[最小最大值]: 现在您可以从可能的y值数组中获得最小值和最大值。
<?php
$minY = min($ybound);
$maxY = max($ybound);
第4 [SHIFT]: 既然你有这样的,应该进行调整非常简单。通过将每个新坐标调整为该值,将左上角设置为0,0。
<?php
$shiftX = -$minX;
$shiftY = $maxY;
有了这个信息,你也可以决定你的图像大小
<?php
$imageX = $maxX - $minX;
$imageY = $maxY - $minY;
然后为你生成你的坐标,你将转向各一台,通过加入移动价值坐标。
<?php
for($x = -$minX; $x <= $maxX; $x += 0.1) {
$ycoor = $shiftY - f($x);
$xcoor = $x + $shiftX;
//draw ...
}
绘制轴也很容易,
<?php
$xaxis = $shiftY;
$yaxis = $shiftX;
(我想我有我所有的迹象正确的。原谅我,如果他们关闭)
0
您首先需要确定边界框你的功能。然后,计算宽度和高度,然后对其进行标准化,使其适合左上角坐标为(0,0)的矩形。也许你还需要将这个数字调整到特定的大小。
相关问题
- 1. 从基点离开一定距离绘制一个点
- 2. 得到N个从数组从给定的点开始数
- 3. AnimationDrawable从特定帧开始?
- 4. SQL中的SUM值从另一个表中的特定点开始
- 5. 从特定日期开始倒计数
- 6. 总是从当前窗口顶部开始一个特定的点
- 7. 在R中,如何绘制这个特定函数的图形?
- 8. jQuery UI的排序 - 当用户开始从一个特定块
- 9. 开始从一个特定的行读取文件
- 10. 从一个特定的字母开始选择记录
- 11. Xcode - >从一个特定的类开始构建
- 12. 从另一个节点开始流?
- 13. 你会如何绘制一个盒子图和同一图上的特定点?
- 14. 从某一点开始scrolldiv
- 15. 绘制一个已定义的函数
- 16. 核心绘图 - 仅绘制图中特定范围内的点
- 17. 如何从一个特定单词开始收集ElementById?
- 18. 从For循环中的特定点开始
- 19. 试图循环到一个函数的开始(排序)python
- 20. 开始在R轴绘图
- 21. 绘制一条线一个特定的点,matplotlib
- 22. 从On ClickListener开始一个意图
- 23. 如何绘制线从一个点开始并穿过另一个点并延伸到MATLAB中的坐标轴
- 24. 从Visual Studio的C#中的某个特定时间点开始调试
- 25. 从一开始就读取一个字节的文件从开始到开始
- 26. xcode在特定行,视图或点中开始模拟
- 27. mysql:我如何开始从特定点自动增量?
- 28. 什么类型的SSRS图表会绘制个别特定点?
- 29. 开始特定的前缀
- 30. 使用plot.xts的开发版本的自定义绘图函数
你有一些示例代码? – Yoshi 2011-04-12 15:23:50