C# 求一个数学公式(请看图)

「已注销」 2018-01-14 01:48:24

我想做一个动画,需要用到椭圆的相关算法,但数学知识都还给老师了!请教下论坛里的高手!(如图所示)



如上图所示:已知矩形ABCD四个点的坐标,这四个点刚好在椭圆上,求椭圆最小直径EF和最大直径GH的长度?
...全文
648 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyg17173 2018-01-18
  • 打赏
  • 举报
回复
马克吐温,大赞。
「已注销」 2018-01-15
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
设矩形宽为 w,高为 h,且 w>h 则 长轴 a = √2*w 短轴 b = √2*h ...
厉害了!版主! 虽然代码暂时还不能全部看懂,但解决问题了!
xuzuning 2018-01-15
  • 打赏
  • 举报
回复
设矩形宽为 w,高为 h,且 w>h

长轴 a = √2*w
短轴 b = √2*h

就这个意思,把分母固定住
        PointF p = PointF.Empty;
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var o = new Point(Width / 2, Height / 2);
var g = e.Graphics;

g.DrawLine(Pens.Red, o.X, o.Y - 5, o.X, o.Y + 5);
g.DrawLine(Pens.Red, o.X - 5, o.Y, o.X + 5, o.Y);

if (p != PointF.Empty)
{
var w = Math.Abs(p.X - o.X);
var h = Math.Abs(p.Y - o.Y);
g.DrawRectangle(Pens.Red, o.X - w, o.Y - h, w + w, h + h);
g.DrawEllipse(Pens.Red, o.X - w, o.Y - h, w + w, h + h);

var k = (float)Math.Sqrt(2);
var a = k * w;
var b = k * h;

g.DrawEllipse(Pens.Green, o.X - a, o.Y - b, a + a, b + b);
}
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
p = e.Location;
Invalidate();
}
}
「已注销」 2018-01-14
  • 打赏
  • 举报
回复
引用 6 楼 Saleayas 的回复:
外界和内切,根号 2 倍
脑袋蒙的!!椭圆的概念和公式都忘了,什么离心率之类的都搞不懂了,能不能写个计算步骤,谢谢!
Saleayas 2018-01-14
  • 打赏
  • 举报
回复
外界和内切,根号 2 倍
「已注销」 2018-01-14
  • 打赏
  • 举报
回复
引用 1 楼 StratosBlue 的回复:
数学不好。。。但只有四个点不能确定唯一的椭圆吧。。。



引用 4 楼 caozhy 的回复:
当焦点在x轴时,椭圆的标准方程是:x^2/a^2+y^2/b^2=1,(a>b>0)
你的问题是已知x y求a b
如果知道abcd四个点,相当于只有一组参数(因为x y和另一组的-x -y相等,而x^2和(-x)^2是一回事)
有两个x y对,就可以解上述方程,编程数值解法有很多,比如牛顿迭代法。



大神们,我的错,让你们费心了,再补上一个条件!(如下图)

紫色的椭圆是由橙色的椭圆放大的!(橙色椭圆刚好被矩形框住,四个点刚好在矩形上)大神们再看看呢!怎么求EF,和GH的长度?
threenewbee 2018-01-14
  • 打赏
  • 举报
回复
当焦点在x轴时,椭圆的标准方程是:x^2/a^2+y^2/b^2=1,(a>b>0) 你的问题是已知x y求a b 如果知道abcd四个点,相当于只有一组参数(因为x y和另一组的-x -y相等,而x^2和(-x)^2是一回事) 有两个x y对,就可以解上述方程,编程数值解法有很多,比如牛顿迭代法。
Saleayas 2018-01-14
  • 打赏
  • 举报
回复
椭圆有两个参数,但是你只有一个约束条件。 你可以想象把椭圆无限拉长?
秋的红果实 2018-01-14
  • 打赏
  • 举报
回复
长半轴和短半轴吧 这不是一个计算机问题 查下数学知识
Anonymous477 2018-01-14
  • 打赏
  • 举报
回复
数学不好。。。但只有四个点不能确定唯一的椭圆吧。。。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧