2011-07-29 10 views
0

자바 애플릿 OpenGL 시뮬레이션이 있는데 을 HTML5 캔버스로 변환하려고합니다. 누구든지이 좌표를 어떻게 변환 할 수 있는지 알고 있습니까?OpenGL 캔버스 좌표를 HTML5 캔버스 좌표로 변환

OpenGL은 음의 좌표없이 을 600y하는 -400x 400X +와 -600y에서 내 캔버스 400X에 대해 0x에서다면 + 600y, 및 해당 제품이 사용에서에서 얻을.

답변

0

이것은 단순한 선형 함수입니다. 선형 함수 형태에 대한 f(x) = m * x + n

을 가지고있는 x 좌표 :

을 당신은 400에 0 -400과 400을 매핑 할 두 점 그래서 (-400, 0), (400, 400) 당신의 선형 관계를 묘사합니다. m = (400-0)/(400--400) = 그래서 1/2

:

이제이 예에서 (Y1-Y2)/(X2-X1)과 그레디언트 계산 m 함수는 이제 다음과 같습니다 F (X) = 2 * X + N

계산하기 위해 N (y 절편) 방금 점을 삽입 (예 : (-400, 0)) :

참고로 200 N 얻을 0 = 1/2 * (-400) + N

그래서 최종 함수

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 기울기 = 기울기 * glMinX; var yIntercept = glMaxX - 기울기; var newX = gradientM * x * yIntercept; ' – tschleuss

+0

glMinX를 canvasMinX =>에 매핑하려는 경우의 점 (-470, 0)이고 glMaxX를 canvasMaxX => Point (470, 480) 그라디언트 = (y2-y1)/(x2-x1) = (480-0)/(470-470) = 24/47 그래서 그라디언트 = ((x2, y2) 이 예에서 yIntercept = 0 - 47/47 * (- 470) = 240 (canvasMaxX-canvasMinX)/(glMaxX-glMinX) f (x) = 24/47 * x + 240' f (-470) = 0 및 f (470) = 480 당신의 함수는 f (x) = gradient * x + yIntercept 이됩니다. 코드 : newX = 그라디언트 * x + yIntercept – Daniel