我想創建一個圖形計算器,並且Im與圖位保持一致。我想知道如何繪製sin(x)cos(x)tan(x)的圖形。我已經制作了電網。我不想使用核心劇情框架。Xcode圖計算器sin(X)cos(x)tan(x)
任何幫助,將不勝感激。 謝謝。
我想創建一個圖形計算器,並且Im與圖位保持一致。我想知道如何繪製sin(x)cos(x)tan(x)的圖形。我已經制作了電網。我不想使用核心劇情框架。Xcode圖計算器sin(X)cos(x)tan(x)
任何幫助,將不勝感激。 謝謝。
要實際繪製函數,請像使用紙張和鉛筆一樣進行繪製:評估許多輸入的函數。然後畫線以連接所得到的點。
下面是一些僞代碼,可以回答你的問題:
for i = xmin to xmax do
{
draw XY point at X=(i*x_scale_factor+x_offset) and Y=(sin(i)*y_scale_factor+Y_offset);
}
而且要注意:不要在響應中使用的float循環
編輯以評論
最簡單的方法,恕我直言,將獲得您的觀點的界限,以獲得您的數據在X軸和Y軸上的最小值和最大值。
然後,您可以使用NSAffineTransform
實例來轉換繪圖的座標。所以一切都可以在你的圖形座標中完成,這很容易。如果您願意,您可以在座標(4.6,3.2 * 10-7)上書寫標籤。這是讓你開始的關鍵。路很長。但使用NSAffineTransform
會使它更容易。
不,我真的做到這一點(我想看看核心地塊),但你可以使用一個核心圖像生成過濾器繪製這樣的圖,像這樣:
//wavelength and magnitude are distances in destination pixels. Think of them as the width and height of each wave.
kernel vec4 sineWave(float wavelength, float magnitude, __color color)
{
vec2 coord = destCoord();
coord.y -= magnitude;
coord /= vec2(wavelength, magnitude/2.0);
float pi = radians(180.0);
float value = sin(coord.x * pi);
//Smaller threshold = finer wave line. For a gradient, replace the comparison with 1.0 - abs(…).
float threshold = 0.1;
float alpha = abs(coord.y - value) <= threshold;
return color * alpha;
}
嗨Peter,謝謝你的幫助!這個想法是創建這樣的事情:http://www.youtube.com/watch?v=8cIh1Ohrfzs我有網格和計算器部分工作,但想知道如何將三角函數繪製到網格中。 – 2013-03-24 10:10:33
什麼樣的你尋求的幫助?我爲繪圖(數據源,控制器,視圖等)製作了幾門課,但是它有2500線和12課。太多的東西要張貼在這裏。告訴我們需要幫助的部分(繪製座標軸,計算刻度等),我們可能會提供幫助。我提到軸線和比例,因爲這些是繪圖的關鍵點。 – Jean 2013-03-24 01:37:47
你能更具體嗎?你甚至不知道你是在MacOS X還是iOS上工作,更不用說你遇到了什麼問題。 – Caleb 2013-03-24 01:38:10
@Jean是的,我需要幫助繪製軸和縮放,感謝您的幫助! – 2013-03-24 03:06:15