[CDR X5-X8] как найти все прямые углы?

Статус
Закрыто для дальнейших ответов.

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
есть некоторая прямая.
задача - найти в ней все прямые углы.
думал решить через проход по всем узлам и определения угла по трем из них. вроде все просто.
но потом посмотрел что в круге четыре узла и между ними тоже прямые узлы.
т.е. надо както отловить то чт узел задает не прямую, а дугу.
не знаю верно ли объяснил.
или может ест какая то встроенная функция, позволяющая найти прямые углы.
Спасибо!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
думал решить через проход по всем узлам и определения угла по трем из них. вроде все просто.
Принцип верен, но вы как определяете - по соседним узлам, так?
А надо по хинтам, если они не нулевые. Если нулевые, только тогда по соседним узлам
Я буквально позавчера аналогичный алгоритм для иллюстратора демонстрировал
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
поэтому и спрашивал как узнать ровный он или нет.
но уже сам нашел - вроде через Segment.Type
спасибо! )
пошел искать формулу вычисления угла по точкам
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
формулу вычисления угла по точкам
Ну я ж вам ссылку привел
обратите внимание на строку
Код:
cosalpha=Math.abs(((xb-xa)*(xc-xa)+(yb-ya)*(yc-ya))/
 (Math.sqrt(((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya))*((xc-xa)*(xc-xa)+(yc-ya)*(yc-ya)))));
Это оно и есть
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
видел, но не совсем понял что такое xc ((
xa - первая координата
xb - вторая
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Ну неужели ж я такой заумный математик, что простые люди меня не понимают? 'fp'У вас треугольник ABC, соответственно, координаты его вершин (xa,ya)(xb,yb)(xc,yc) Надо найти угол A - что сложного то?
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
ааа, я думал третья координата - это ось z )
поэтому и смотрю что ноль получается ))
Спасибо!
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
чтото не получается.
если, к примеру, в квадрате вырезан квадрат, то последовательный проход по узлам не дает нужный результат.
потому что узлы перибираються не сначала наружные, а потом внутренние, а в каком то хаотичном порядке (
это можно исправит?
чтобы сначала он наружный замкнутый контур смотрел, а потом внутренний.
а не то тот, то тот.
спасибо!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
чтобы сначала он наружный замкнутый контур смотрел, а потом внутренний.
Без проблем
У каждой Curve есть набор SubPaths каждый из которых представляет собой контур
Вот элементы каждого SubPath и перебирайте, там прямо по порядку сегменты перечислены
 
  • Спасибо
Реакции: Nezar

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
Получилось! Спасибо!
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
работает, но все равно както странно.
нужно неколько раз запустить
иначе пропускает углы... принципе не критично, но если будут наводки - буду благодарен)
 
Статус
Закрыто для дальнейших ответов.