![]() |
|
||||||||||
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
То что окружность вписана в угол это частный случай "скругления"
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
KumoKairo я доллго не решался спросить, думал, может чего сам не понимаю. Сидел читал, читал, но так и не понял. По этому решил спросить - Ваш код направление тоже не понимает?Просто если угол развернуть, то окружность и лучи не понимают этого и отображаются вне угла.
я именно про такое направление спрашивал. Находить биссектрису и точки я умею. я не могу понять как научить код понимать, что угол должен быть в право или влево. |
|
|||||
|
Цитата:
В моем коде хардкодом забита формула со всеми плюсами, поэтому код считает, что мы поворачиваем вектора по часовой стрелке Цитата:
Для нахождения направления поворота можно просто найти минимальный угол поворота (от одного вектора к другому) из двух возможных |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Добавлено через 1 час 26 минут У меня в голове крутится, какая то странная мысль, которую я самостоятельно не могу опровергнуть. Если знать вектора ab и ca и угол, то можно же узнать координату точки D? Или это я что то перепутал? Последний раз редактировалось Akopalipsis; 04.09.2013 в 21:41. |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Может кто нибудь обьяснить, почему когда я ставлю синус точки р0 в минус, меняются координаты точки В?
package geom { import flash.display.Sprite; import flash.geom.Point; public class Vector extends Sprite { public function Vector() { var A:Point = new Point(100, 400); var B:Point = new Point(300, 400); var C:Point = new Point(200, 200); var ab:Point = new Point(B.x - A.x, B.y - A.y); var ca:Point = new Point(A.x - C.x, A.y - B.y); var a1:Number = Math.atan2(ab.y, ab.x); var a2:Number = Math.atan2(ca.y, ca.x); var radius:Number = 40; var distance:Number = radius / Math.sin(.5 * (a2 - a1)); var bisector:Number = .5 * (a1 + a2); var cX:Number = A.x + distance * Math.cos(bisector); var cY:Number = A.y + distance * -Math.sin(bisector); var p0:Point = new Point(cX, cY); drawPoin([A, B,C,p0]); } private function drawPoin(array:Array):void { var point:Sprite; var color:uint; for (var i:int = 0; i < array.length ; i++) { if (i == 0) { color = 0xF59452; } else if (i == 1) { color = 0xEEF751; } else if (i == 2) { color = 0xFFFFFF; } else { color = 0x94F453; } point = new Sprite(); point.graphics.beginFill(color); point.graphics.drawCircle(array[i].x, array[i].y, 1); point.graphics.endFill(); this.addChild(point); } } } } Координаты по трейсам как и должны быть, а визуально она смещается. И ещё если минус с синуса убрать, то тоже нормально. Последний раз редактировалось Akopalipsis; 05.09.2013 в 02:20. |
|
|||||
|
я не совсем понял кто куда смещается, но скорее всего это просто 'обман зрения' из-за того, что у флешки стоит режим scaleMode = showAll, меняется не координата а масштаб отображения
посмотри будет ли такое в режиме |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
И я был бы очень рад, если бы кто нибудь, смог обьяснить или показать на примере, как можно получить направление или правильно направленные координаты, на примере моего рисунка чуть выше.) Подскажите пожалуйста какой нибудь ресурс или подскажите, по каким словам можно найти статьи про направление?) А может кто нибудь на словах обьяснить, что происходит за кулисами метода atan2(); ? А то как то странно им пользоваться и не понимать. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Происходит арктангенс по двум катетам.
__________________
Reality.getBounds(this); |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|