浅望 发表于 2020-10-18 18:42

罗技lua和圆锥曲线的问题

本帖最后由 浅望 于 2020-10-22 17:19 编辑

用罗技的鼠标通过
GetMousePosition()
在屏幕上轮流获取3个点,然后根据3点求圆的编程算法:
local A1 = 2*(x2 - x1)
local B1 = 2*(y2 - y1)
local C1 = x2^2 + y2^2 - x1^2 - y1^2
local A2 = 2*(x3 - x2)
local B2 = 2*(y3 - y2)
local C2 = x3^2 + y3^2 - x2^2 - y2^2
x = ((C1*B2 - C2*B1) / (A1*B2 - A2*B1))
y = ((A1*C2 - A2*C1) / (A1*B2 - A2*B1))
return x,y
用这个算法求出来圆心,结果我发现求出来的点根本不是圆心{:1_925:}
我想了想,我屏幕是1920*1080的,而罗技驱动对于屏幕的极坐标规划是左上角坐标(0,0),右下角坐标(65535,65535)
所以横纵轴单位长度不一样,我该怎么改算法才能根据3点得出“屏幕上”的圆心
(如果3点不够,那至少需要几点,虽然圆锥曲线我都忘光了,不过我知道椭圆5点可求得,再根据:①椭圆长短轴比值为16:9;②2个焦点的横坐标或者纵坐标相等可以减少若干个点)
下面是我拿GeoGebra画的图,x、y轴是16:9的比例下显示的是个圆,但是把比例弄成1:1就成椭圆了

列明 发表于 2020-10-18 22:49

没明白你的意思。在长方形屏幕里取得圆心坐标,转化到正方形屏幕里乘以转化比例就行了。

浅望 发表于 2020-10-18 22:55

列明 发表于 2020-10-18 22:49
没明白你的意思。在长方形屏幕里取得圆心坐标,转化到正方形屏幕里乘以转化比例就行了。

我的目的是:在1080P的屏幕上取3个点,然后算法求出圆心
问题所在:取点取得点坐标和屏幕像素坐标不一样,屏幕右小角像素坐标为(1920,1080),取点取得的坐标是(65535,65535)

1364847132 发表于 2020-10-18 23:11

按比例映射成圆,求出圆心再映射回去

浅望 发表于 2020-10-18 23:35

1364847132 发表于 2020-10-18 23:11
按比例映射成圆,求出圆心再映射回去

按这个思路解决了,其实很简单:sleepy:

CSGO01 发表于 2020-10-20 19:21

页: [1]
查看完整版本: 罗技lua和圆锥曲线的问题