抛物线
来源:互联网 发布:js字符串拼接引号 编辑:程序博客网 时间:2024/04/29 01:15
已知三点绘制抛物线,以下代码在VC.NET2003中测试通过。
绘制规则:
1. 把抛物线的顶点移到屏幕的中间的顶部或底部。
2. 通过缩放保证给定的三点在屏幕范围内。
改进:
1. 用点绘图,不连续。
2. 缩放比例过大时,图形有些失真。
3. 显示点及坐标轴相关信息。
- void CChildView::OnPaint()
- {
- CPaintDC dc(this); // 用于绘制的设备上下文
- //double x1 = 100;
- //double y1 = 100;
- //double x2 = 200;
- //double y2 = 200;
- //double x3 = 300;
- //double y3 = 150;
- //double x1 = 50;
- //double y1 = 50;
- //double x2 = 30;
- //double y2 = 30;
- //double x3 = -8;
- //double y3 = 31;
- double x1 = 183;
- double y1 = 373;
- double x2 = 330;
- double y2 = 553;
- double x3 = 553;
- double y3 = 229;
- double a = (y1*x2 + y2*x3 + y3*x1 - y3*x2 - y2*x1 - y1*x3) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3);
- double b = -(y1*x2*x2 + y2*x3*x3 + y3*x1*x1 - y3*x2*x2 - y2*x1*x1 - y1*x3*x3) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3);
- double c = (y1*x2*x2*x3 + y2*x3*x3*x1 + y3*x1*x1*x2 - y3*x2*x2*x1 - y2*x1*x1*x3 - y1*x3*x3*x2) / (x1*x1*x2 + x2*x2*x3 + x3*x3*x1 - x3*x3*x2 - x2*x2*x1 - x1*x1*x3);
- //顶点
- double x0 = -b / 2 / a;
- double y0 = (4*a*c - b*b) / 4 / a;
- //三点中的最远点
- double xm = x1;
- double ym = y1;
- if( abs(x2-x0) > abs(x1-x0) )
- {
- xm = x2;
- ym = y2;
- }
- if( abs(x3-x0) > abs(xm-x0) )
- {
- xm = x3;
- ym = y3;
- }
- //x、y区间
- double cx = ( abs(xm - x0) + 1 ) * 2;
- double cy = ( abs(ym - y0) + 1 );
- //设绘图区
- dc.SetMapMode(MM_ISOTROPIC);
- dc.SetWindowExt( cx, cy );
- //设视口和原点
- CRect rectClient;
- GetClientRect(rectClient);
- dc.SetViewportExt( rectClient.right, -rectClient.bottom );
- if( a > 0 ) dc.SetViewportOrg( rectClient.right/2, rectClient.bottom );
- else dc.SetViewportOrg( rectClient.right/2, 0 );
- //绘图
- for(int x = -cx/2; x < cx/2; x++)
- {
- double y = a*x*x; //把抛物顶点移到视口原点后就变成这样一个简单的函数了
- dc.SetPixel(x,y,RGB(0,0,0));
- }
- }
- 抛物线
- 抛物线
- 抛物线
- 人生抛物线
- 抛物线动画
- unity3d 抛物线
- 购物抛物线
- 抛物线运动
- 计算抛物线方程
- 动态生成抛物线
- 动态生成抛物线
- 抛物线演示实验
- 模拟抛物线的轨迹
- cocos2d 抛物线的实现
- android画抛物线代码
- cocos2d的抛物线动作
- Unity3D 抛物线实现
- JS实现抛物线运动
- 2008-8-21
- MYSQL 的latin1中文 转UTF8方法!
- CSS中expression使用简介
- Winsock 应用程式设计
- 类模板
- 抛物线
- log 080821b
- SOA建模之服务规范
- 奥运焰火图片show
- Stumans v1.1快没戏了
- javaScript实现浮动广告
- 转载:vc常用数据转换
- 设计员的人生之路
- SOA安全性基础知识之创建高层次设计