math - 给定2个坐标和一个角度,找到C坐标
问题描述
下面是一个等边三角形:平分∠ACB将三角形分成两个全等三角形(平分线在中点与线AB相交,形成直角!)
如果 A 是 (1,0),B 是 (5,0),C 是 (c,y),D 是 (c,0)。C 的角度为 tan(theta/2)。在这种情况下为 60 度。我将如何推导出公式以获得以下输出 3.4641016151377553。
另一个例子:A(-2,0), B(6,0),theta 为:120 度输出为:2.309401076758504
输出必须以弧度为单位 (pi/180)
输出是C坐标 在此处输入图像描述
解决方案
假设点A=(a,0)
和B=(b,0)
在 x 轴上,这ABC
是一个等腰三角形,角度theta
为C
:
则D
坐标为((a+b)/2,0)
。在直角三角形中,ADC
我们有tan(theta/2) = (b-a)/2 / h
。因此,我们得到 C 的 y 坐标为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
推荐阅读
- ruby-on-rails - 使用 JSON 通过 Rails Active Storage 访问 React 中的图像
- ansible - Ansible 整数比较,不识别负整数
- r - 在R中通过特定列名合并两个相似数据集时如何删除其他重复的列名
- c# - C# owin web api 路由索引页面
- python - 你如何理解龙卷风中的 ioloop?
- android - 当我希望从 Kotlin 中的一个 SharedPreferences 键获得不同的类型值时如何转换类型?
- javascript - window.getSelection() 如何在 contenteditable javascript 中获取当前节点
- java - LuaJ 中 lua 模块和基于元表的类的组合
- html - 本地磁盘删除了 css 文件,创建了新文件,但无法将其链接到 HTML doc
- cassandra - 无法在马拉松框架上的 mesos 集群上运行 cassandra 集群