Форум: "Прочее";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
ВнизВозникла проблема. Поворот треугольника Найти похожие ветки
← →
ProgRAMmer Dimonych © (2006-11-06 22:35) [0]Треугольник задан координатами своих вершин (a1;a2), (b1;b2), (c1;c2). Выполнить поворот треугольника на 90 градусов относительно вершины (a1;a2). Нарисовать исходный и новый треугольники.
В методическом пособии дана формула.
b=arctg((y2-y1)/(x2-x1)) - это угол между отрезком и прямой параллельной OX
L=sqrt(sqr(x2-x1)+sqr(y2-y1)) - длина отрезка
x3=x1+L*cos(a+b)
y3=y1+L*sin(a+b)
где a - угол, на который поворачивается отрезок вокруг точки (x1;y1), в данном случае - 90 градусов.
Вроде написал прогу с анимацией процесса поворота, всё хорошо. Потом даю тест:
A(50;50), B(0;0), C(50;-50).
Исходный треугольник, как и задумано, остаётся на месте, зато новый треугольник появляется не там, где нужно, т.е. не появляется из исходного, а возникает на продолжении стороны AB так.
Есть подозрение, что причина в формуле: если угол b=-135 градусов, то arctg(tg(b))=45, что отличается на 180 градусов, но в методичке по этому поводу нет никаких пояснений.
Кто-нибудь решал подобную задачу? В чём тут прикол?
Если надо, кину сюда текст программы.
← →
ferr © (2006-11-06 22:36) [1]> b=arctg((y2-y1)/(x2-x1)) - это угол между отрезком и прямой
> параллельной OX
плохая методичка))
← →
ProgRAMmer Dimonych © (2006-11-06 22:37) [2]> ferr © (06.11.06 22:36) [1]
А что здесь должно быть на самом деле?
← →
ferr © (2006-11-06 22:38) [3]> А что здесь должно быть на самом деле?
ничего
← →
ProgRAMmer Dimonych © (2006-11-06 22:39) [4]Нет, а серьёзно.
← →
ferr © (2006-11-06 22:39) [5]ну это грабли потенциальные.. так не делается.. ещё?
← →
ProgRAMmer Dimonych © (2006-11-06 22:41) [6]Чё-то не улавливаю мысли, что здесь должно быть, чтобы не возникало проблем с треугольниками типа [0].
← →
ferr © (2006-11-06 22:42) [7]я бы построил 2 вектора, повернул их на 90 гравдусов (2 строчки, линейное отображение), и пошёл чай пить..
← →
guav © (2006-11-06 22:44) [8]arctan2
← →
ProgRAMmer Dimonych © (2006-11-06 22:46) [9]> guav © (06.11.06 22:44) [8]
Квадрат или что?
← →
ferr © (2006-11-06 22:46) [10]> [8] guav © (06.11.06 22:44)
> arctan2
ага, тоже выход))
← →
ferr © (2006-11-06 22:47) [11]Только я вот думаю зачем нужны atanы, если без них можно))
← →
guav © (2006-11-06 22:48) [12]а вообще, поворот на 90 делается без тригонометрических функций такой матрицей:
0 1
-1 0
Т.е. что-то вроде (X - x1) := (Y - y1); (Y - y1) := -(X - x1);
← →
guav © (2006-11-06 22:48) [13]> [9] ProgRAMmer Dimonych © (06.11.06 22:46)
Нет. Функция.
← →
ProgRAMmer Dimonych © (2006-11-06 22:50) [14]> guav © (06.11.06 22:48) [13]
Проблема в том, что у меня трубопаскакаль.
← →
ferr © (2006-11-06 22:53) [15]> Проблема в том, что у меня трубопаскакаль.
[7] [12]
← →
Горгер © (2006-11-07 03:03) [16]Читай материал по аффинным преобразованиям.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.054 c