Геометрия в JS для Altium Designer

345
18 мая 2017, 11:39

Добрый день. Пишу скрипт для Altium Designer. Его смысл заключается в том, что он двумя простыми линиями (Track) и двумф дугами (Arc) обрисовывает овальное отверстие (Pad). Застрял на геометрии. У объекта отверстие есть следующие переменные: Pad.x - координата центра отверстия по оси х. Pad.y - координата центра отверстия по оси y. Pad.Rotate - угол поворота отверстия. Pad.HoleSize - диаметр отверстия. Pad.Length - длина отверстия. Обрисованное отверстие состоит из двух линий и двух дуг. Каждое отверстие соединяется с двумя дугами. Мне нужно посчитать точки где они соприкасаются, чтобы построить их, потому что у линий есть переменные Track.x1, Track.x2, Track.y1 и Track.y2. У дуг есть Arc.x, Arc.y, Arc.StartAngle, Arc.EndEngle - координаты центра и начальный и конечный угол дуги. Я пытался рассчитать с помощью формул типа xcos(Pad.Rotate)-ysin(Pad.Rotate), но кажется, что они должны быть разными для разных углов поворота, потому что нормально получается построить только для одной линии и только при начальном угле поворота. Я или путаю знаки или использую не те формулы. Подскажите, пожалуйста. Больше подробностей на рисунке.

READ ALSO
Как средствами PHP или JS изменить текст в HTML файле?

Как средствами PHP или JS изменить текст в HTML файле?

Я выгружаю готовую HTML страницу, отображается как бланк с даннымиЕсть поля которые нужно заполнить цифрами, либо изменить в них данные

381
Вывод в консоль происходит только при клике. А как при движении курсора?

Вывод в консоль происходит только при клике. А как при движении курсора?

При движении курсора над страницей консоль не выводит результатТолько при клике

353
Как сделать параллельный запрос nodejs?

Как сделать параллельный запрос nodejs?

Возникла проблема, до конца не могу понять, как работать с асинхронными языкамиФункция работает, отдает мне нужный объект, но только после...

273
как в vuejs по клику на кнопку поменять цвет

как в vuejs по клику на кнопку поменять цвет

Есть у меня кнопки выведены с помощью vuejs

320