|
|
|
|
|
|
|
Вернуться
| 1 Богдан, 19 июня 2018 г. 21:24:07 | |
|
Большое спасибо.
|
|
|
| 2 Тер-Саркисов Богдан Олегович, 19 июня 2018 г. 12:10:50 | |
Есть отрезок с концами (ax1, ay1), (ax2, ay2). Для него можно составить каноническое уравнение прямой, на которой он находится: (x - ax1) / (ax2 - ax1) = (y - ay1) / (ay2 - ay1). Затем приводим его к другому виду, перемножив крест-накрест и перенеся все в одну сторону: (ax2 - ax1)*(y - ay1) - (ay2 - ay1)*(x - ax1) = 0. Концы второго отрезка должны быть по разные стороны от прямой, на которой лежит первый отрезок. Чтобы это проверить, подставляют в выражение (ax2 - ax1)*(y - ay1) - (ay2 - ay1)*(x - ax1) сначала один конец второго отрезка, затем второй конец второго отрезка. Если два полученных числа (в коде это v3 и v4) имеют разные знаки, то они находятся по разные стороны от этой прямой. Аналогичное делается для второго отрезка. Составляется его уравнение прямой, подставляются туда концы первого отрезка, получаются числа v1 и v2. Если произведение чисел отрицательное, то они имеют разные знаки.
|
|
|
Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!
| | | |