Я роблю гру в "Єдності". Там є прямокутник, перетинаний прямою лінією. Мені потрібно знайти яку частину rect більше і скільки. Хто-небудь знає алгоритм, як це зробити?
Ректи та лінії встановлюються точками (4 для прямокутника та 2 для рядків)
Відповіді:
3 для відповіді № 1Неявне рівняння лінії є
S(x,y) = (x - x0) (y1 - y0) - (y - y0) (x1 - x0) = 0
Коли ви підключаєте координати кута, знак S(x, y)
каже, на якій стороні лінії ви знаходитесь. І краще, якщо оцінити Sa
і Sb
на двох кутах, і вони мають різні ознаки, перетин є в дрібниці Sa / (Sa - Sb)
вздовж боків ab
.
Тепер обробляйте всі чотири ребра по черзі за годинниковою стрілкоюзамовлення Для кожного ребра, тримайте стартовий кут, якщо це позитивний, і, якщо є, утримуйте перехрестя. Зрештою, ви отримаєте від 0 до 5 балів, визначаючи опуклий багатокутник, який знаходиться в позитивному полі.
Площа знаходиться за адресою шнурок формула
0 для відповіді № 2
Визначте, чи заштрихована область є суто трикутником, якщо так, обчислити площу цього трикутника (a * b) / 2, це дозволить виправити діаграму правої руки.
Для діаграми лівої руки розгляньте область як трикутник та прямокутник. Обчислить затінену область, об'єднавши область трикутників та область прямокутників.
HTH