2011-07-29 11 views
0

Java Applet OpenGLシミュレーションがあり、 をHTML5キャンバスに変換しようとしています。誰でも私はこれらの座標をどのように変換できますか?OpenGLキャンバス座標をHTML5キャンバス座標に変換する

OpenGLは-400xから+ 400x、-600yから+ 600y、 、キャンバスは0xから400x、0yから600yは負の座標なしで になります。

答えて

0

これは単なる単純な線形関数です。線形関数は、フォームのf(x) = m * x + n

を持っているx座標:

をあなたは、400〜0〜-400および400をマッピングしたいあなたは2点を持っているので(-400、0)、(400、400)あなたの線形関係を記述する

あなたは今、この例では、/(X2-X1)(Y2-Y1)との勾配mを計算する:M =(400-0)/(400--400)= 1/2

ので、あなたの関数は、今のようになります。F(X)= 1/2 * X + N

計算するためのn(y切片)あなただけのポイントを挿入します(例えば(-400、0)):

0 = 1/2 *(-400)+ n

最終的な関数はf(x) = 1/2 * x + 200

0123です。

あなたが得るy座標についてg(y) = 1/2 * y + 300

+0

ありがとう、私は今仕事中です。私は今夜​​テストします! – tschleuss

+0

私はこれを作ろうとしていますが、うまくいきません。 'var x =?; var glMinX = -470; var glMaxX = 470; var canvasMinX = 0; var canvasMaxX = 480; var gradient =(glMinX-glMaxX)/(canvasMinX - canvasMaxX); var slope = gradient * glMinX; var yIntercept = glMaxX - 傾き; var newX = gradientM * x * yIntercept; – tschleuss

+0

glMinXをcanvasMinXにマップしたい=>ポイント(-470,0)(これは(x1、y1)) で、glMaxXをcanvasMaxX => Pointにマップしたい470,480)(これは(x2、y2)) グラジエント=(y2-y1)/(x2-x1)=(480-0)/(470-470)= 24/47 したがって、 'gradient =この例では、yIntercept = 0 - 47/47 *( - 470)= 240 (canvasMaxX-canvasMinX)/(glMaxX-glMinX) f(x)= gradient * x + yIntercept のように関数を得る:f(x)= 24/47 * x + 240' f(-470)= 0、f(470)= 480 コード内: newX = gradient * x + yIntercept – Daniel

関連する問題