Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1163052832
Layner
2006-11-09 09:13
2006.11.26
Привязка к MAC адресу, версии BOIS программы... за и против


4-1153121367
Чапаев
2006-07-17 11:29
2006.11.26
Буква загрузочного тома


4-1152858810
Mamed
2006-07-14 10:33
2006.11.26
rapi. delete file


1-1160722650
CaptainX
2006-10-13 10:57
2006.11.26
Перенести текст или файл на иконку в трее (Drag and Drop)


1-1161007023
MetalFan
2006-10-16 17:57
2006.11.26
Функция копирования PChar в string





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский