2013-04-05 4 views
1

У меня есть декартова точка, которую мне дают (синяя линия), и мне нужно преобразовать ее в точку относительно повернутой плоскости (зеленый квадрат). Плоскость поворачивается на 28,227º, как показано ниже.Преобразование декартовой точки в точку на повернутой плоскости (рис.)

К сожалению, у меня недостает математического образования, я полностью сбился с толку относительно того, как решить эту проблему. Я должен уметь принимать любую точку x, y и преобразовывать ее для повернутой плоскости.

Любая помощь вообще на этом была бы очень признательна, поскольку я нахожусь в полной потере.

Лучшее, что я могу выяснить, мне понадобятся несколько разных вычислений в зависимости от того, где находится входная точка.

http://adam-meyer.com/lab/rotatedPlane2.png

+0

я сначала хотел написать его для вас, но его лучше для вас, чтобы понять это сами: здесь смотрите: http://mathworld.wolfram.com/RotationMatrix.html, вы знаете, x0 и y0 и даже угол эйлеров ... поэтому его «легко» получить x 'и y' – Najzero

+0

@Najzero - Hahahaha ... Я думаю, вы серьезно оцениваете математику, которую они учат в школе дизайна. Спасибо за ссылку! Я вижу, могу ли я попытаться понять это, выглядя довольно мрачно. –

+0

Совет: углы между красными и синими линиями равны вашему 28.227 – Olexandr

ответ

1

Я люблю друзей, которые знают математику. Спасибо KJ! Вот ответ.

function convertPoint(x,y){ 

    var degree = -28.227; 
    var offset = 0; //change if your corner is not 0,0 

    x2 = x *Math.cos(radians(degree)) + (y - offset) *Math.sin(radians(degree)); 
    y2 = x *Math.sin(radians(degree)) - (y - offset) *Math.cos(radians(degree)); 

    return {x: x2, y: y2} 
} 

function radians(degrees){ 
    return degrees * (Math.PI/180); 
} 
+0

Вы много помогаете, я застрял 30 минут в этой проблеме, но не для этого решения, я просто забыл конвертировать в радианы .... – Guilherme

Смежные вопросы