![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Здравствуйте
Вроде в школе неплохо учился, но никак не могу сообразить Подскажите, пожалуйста, как мне построить треугольник, точки нижней стороны которого касаются овала Точку "A" я планирую двигать мышкой Последний раз редактировалось djyamato; 09.12.2010 в 16:29. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Берёшь точку не на овале, берёшь две точки на овале, соединяешь их. Что из этого не понятно?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
а как взять-то точки на овале ? по какому алгоритму ?
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Уравнение овала (ну т.е. эллипса):
параметрическое (рекомендую) x = centerX + A*cos(t) y = centerY + B*sin(t) A, B - полуоси (2А - ширина, 2В - высота). Вот берёшь t какое нравится и получаешь точку на эллипсе. Каноніческое есть в википедии какой-нить.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 425
|
__________________
можно, даже нужно на "ты", - Я лишён предрассудков относительно "Вы" =)) но чур без фамильярностей... |
|
|||||
|
О, спасибо большое, буду "кривокодить" пробовать
Добавлено через 1 час 22 минуты ЭЭЭх, как же эту t завязать с положением мыши ? Добавлено через 2 часа 21 минуту Все, разобрался, спасибо всем вот код, на всякий случай import flash.geom.Point; import flash.display.Sprite; // A - полуось ширины // B - полуось высоты // уравнение эллипса // x = centerX + A*cos(t); // y = centerY + B*sin(t); var EllipseSprite:Sprite=new Sprite(); addChild(EllipseSprite); var centerX:Number=300; var centerY:Number=200; var A:Number=200; var B:Number=100; var p0=new point(); addChild(p0); var p1=new point(); addChild(p1); var p2=new point(); addChild(p2); EllipseSprite.graphics.lineStyle(1,0x0000,1); EllipseSprite.graphics.drawEllipse(centerX-A,centerY-B,A*2,B*2); stage.addEventListener("mouseMove",mouseMoveHandler); function mouseMoveHandler(event:MouseEvent):void{ var dx:Number = event.stageX - centerX; var dy:Number = event.stageY - centerY; var angle:Number = Math.PI-Math.atan2(dy, dx); // точка от которой треугольник к элипсу p0.x=event.stageX; p0.y=event.stageY; p1.x=centerX - A*Math.cos(angle-0.15); p1.y=centerY + B*Math.sin(angle-0.15); p2.x=centerX - A*Math.cos(angle+0.15); p2.y=centerY + B*Math.sin(angle+0.15); event.updateAfterEvent(); inf.text="angle="+String(angle); } Последний раз редактировалось djyamato; 09.12.2010 в 23:43. |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|