Middle — Senior
Ինչպե՞ս որոշել ուղղահայաց սիմետրիական առանցքը կետերի ցուցակի համար։
sobes.tech AI
Պատասխան AI-ից
Որպեսզի որոշեք ուղղահայաց համաչափության առանցքը մակերեսի վրա գտնվող կետերի հավաքածուի համար, կարող եք օգտագործել հետևյալ մոտեցումը:
- Գտեք բոլոր կետերի X առանցքի վրա նվազագույն և առավելագույն արժեքները՝
minXևmaxX: - Նպատակը, որ համաչափության առանցքը՝ դա ուղղահայաց գիծ է
x = (minX + maxX) / 2: - Ստուգեք յուրաքանչյուր կետի համար, արդյոք կա այդ առանցքի նկատմամբ հակադարձ կետ, այսինքն՝ կետ
(2 * axisX - x, y):
Եթե բոլոր կետերի համար գտնվի համապատասխան հակադարձ կետ, ապա x = axisX գիծը համաչափության առանցքն է:
Python-ում օրինակ՝
def ունի_ուղղահայաց_համաչափություն(կետեր):
xs = [p[0] for p in կետեր]
min_x, max_x = min(xs), max(xs)
axis_x = (min_x + max_x) / 2
կետեր_համախումբ = set(կետեր)
for x, y in կետեր:
հակադարձ = (2 * axis_x - x, y)
if հակադարձ ոչ in կետեր_համախումբ:
return False, None
return True, axis_x
# Օրինակ՝
կետեր = [(1,2), (3,2), (1,4), (3,4)]
արդյունք, առանցք = ունի_ուղղահայաց_համաչափություն(կետեր)
if արդյունք:
print(f"Համաչափության առանցք՝ x = {անցք}")
else:
print("Համաչափության առանցք չի գտնվել")
Այս մեթոդը աշխատում է դիսկրետ կետերի հավաքածուների համար և ստուգում է հակադարձված կետերի ճշգրիտ համապատասխանությունը: