Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: ecspertiza от Декабрь 12, 2011, 19:17



Название: Рисование треугольника
Отправлено: ecspertiza от Декабрь 12, 2011, 19:17
Задача больше геометрическая, но решение пока в голову не пришло :)  Есть две точки на плоскости - это линия которая является высотой равнобедренного треугольника, зная (x1,y1,x2,y2) этой высоты нужно построить сам треугольник. Пока в голову ничего не идет :) Может подскажете что ?


Название: Re: Рисование треугольника
Отправлено: Fat-Zer от Декабрь 12, 2011, 19:34
не хватает одной величины... например длинны основания.


Название: Re: Рисование треугольника
Отправлено: Igors от Декабрь 12, 2011, 19:34
Задача больше геометрическая, но решение пока в голову не пришло :)  Есть две точки на плоскости - это линия которая является высотой равнобедренного треугольника, зная (x1,y1,x2,y2) этой высоты нужно построить сам треугольник. Пока в голову ничего не идет :) Может подскажете что ?
Обозначим QPointF

p1(x1, y1) - "нижняя" точка (посередине основания треугольника)
p2(x2, y2) - "верхняя" точка треугольника

Тогда
v =  p2 - p1 (вектор из p1 в p2)
d = QVector2D(v.y(), -v.x()) / tan(angle_rad);  (вектор половины основания)
p3 = p1 + d;
p4 = p1 - d;

Итого треугольник (p3, p2. p4)
angle_rad = угол при основании (должен быть известен) в радианах


Название: Re: Рисование треугольника
Отправлено: Hellraiser от Декабрь 12, 2011, 19:39
Это хорошо если есть хотя бы один из углов. Если известна только высота - никак. Основание может быть любым, а треугольник все равно останется равнобедренным. Может по условию треугольник равносторонний?


Название: Re: Рисование треугольника
Отправлено: ecspertiza от Декабрь 12, 2011, 22:35
можно и равносторонний сделать, думаю не особо критично.


Название: Re: Рисование треугольника
Отправлено: Fat-Zer от Декабрь 13, 2011, 01:30
тогда см. формулу Igors'а с углом 60 градусов


Название: Re: Рисование треугольника
Отправлено: ecspertiza от Декабрь 14, 2011, 18:03
Igors, спасибо, и всем остальным тоже, заработало все хорошо.