Учитывая 2 координаты и угол, найдите C координату - PullRequest
0 голосов
/ 28 января 2020

Следующее является равносторонним треугольником: Биссектриса ∠ACB разбивает треугольник на два конгруэнтных треугольника (и биссектриса пересекает линию AB в своей средней точке и образует прямой угол!)

, если A равно (1, 0) и B равно (5,0), C равно (c, y) и D равно (c, 0). C имеет угол загара (тета / 2). В этом случае 60 градусов. Как бы я вывел формулу, чтобы получить следующий вывод 3.4641016151377553.

Другой пример: A (-2,0), B (6,0), тета: 120 градусов Выход: 2.309401076758504

Выходные данные должны быть в радианах (pi / 180)

Выходные данные C координата введите описание изображения здесь

1 Ответ

1 голос
/ 28 января 2020

Предполагая, что точки A=(a,0) и B=(b,0) находятся на оси x и что ABC является равнобедренным треугольником с углом theta при C: enter image description here Тогда D имеет координаты ((a+b)/2,0). И в прямоугольном треугольнике ADC мы имеем tan(theta/2) = (b-a)/2 / h. Следовательно, мы получаем координату y C как h = (b-a)/2/tan(theta/2).

Вот соответствующий код ракетки:

#lang racket
(require math)
(define (half v) (/ v 2))
(define (deg2rad angle_deg) (* angle_deg (/ pi 180)))
(define (cy a b theta) (/ (half (- b a)) (tan (deg2rad (half theta)))))
(cy 1 5 60)
(cy -2 6 120)

, дающий вывод:

3.464101615137755
2.309401076758504
...