利用SuperMap iObjects.NET控件模拟小球平抛运动
2024-08-28 20:23:23
1.部署SuperMap iObjects.NET控件
相关控件部署参考博客:SuperMap开发入门2——环境部署——我也是个傻瓜
2.Github项目地址
3.项目描述
3.1. 创建小球
geoStyle_P.MarkerAngle = 14.0;
geoStyle_P.MarkerSize = new Size2D(5, 5);
geoStyle_P.LineColor = Color.Red;
GeoPoint point = new GeoPoint();
point.X = Xx[hh];
point.Y = Yy[hh];
point.Style = geoStyle_P;
3.2. 创建轨迹线
Point2D p = map.Center;
Point2D pl = map.Center;
int m = 0;
Xx = ts.Keys.ToList<double>();
Yy = ts.Values.ToList<double>();
Point2Ds point2Ds = new Point2Ds();
for (int i = 0; i < Xx.Count; i++)
{
Point2D point2D = new Point2D(Xx[i], Yy[i]);
point2Ds.Add(point2D);
}
GeoLine geoLine = new GeoLine(point2Ds);
mapControl1.Map.TrackingLayer.Add(geoLine, "线");
mapControl1.Map.Refresh();
3.3. 平抛运动参数输入
private double Xs(double t)
{
double v0 = double.Parse(textBox1.Text);
return v0 * t;
}
private double Ys(double t)
{
double g = double.Parse(textBox3.Text);
return 0.5 * g * t * t;
}
Dictionary<double, double> ts = new Dictionary<double, double>();
string str;
public Dictionary<double, double> con()
{
return ts;
}
public string name()
{
return str;
}
private void button2_Click_1(object sender, EventArgs e)
{
double t;
double ht = Math.Sqrt(2 * double.Parse(textBox2.Text) / double.Parse(textBox3.Text));
for (t = 0; t <= ht; t += 0.1)
{
double x = Xs(t) + 300;
double y = Ys(t) - 400;
ts.Add(x, -y);
}
str = string.Format("当地重力加速度:{0}\n小球水平方向初速度:{1}\n小球下落高度:{2}\n小球落地时间:{3}\n小球水平方向位移:{4}\n小球总位移:{5}\n小球平抛运动轨迹方程:y=-({6})*x^2", double.Parse(textBox3.Text), double.Parse(textBox1.Text), double.Parse(textBox2.Text), ht, double.Parse(textBox1.Text) * ht, Math.Sqrt(Math.Pow(double.Parse(textBox1.Text) * ht, 2) + Math.Pow(double.Parse(textBox2.Text), 2)), 0.5 * double.Parse(textBox3.Text) / Math.Pow(double.Parse(textBox1.Text), 2));
this.Hide();
}
3.4. 利用timer控件和MapControl的跟踪层模拟小球平抛运动
private void timer1_Tick(object sender, EventArgs e)
{
if (n)
{
m = timer1.Interval;
n = false;
}
if (this.timer1.Interval % 2 == 0)
{
GeoPoint point = new GeoPoint();
point.X = Xx[hh];
point.Y = Yy[hh];
point.Style = geoStyle_P;
mapControl1.Map.TrackingLayer.Add(point, "点");
mapControl1.Map.Refresh();
hh++;
}
m++;
if (hh == Xx.Count)
{
this.richTextBox1.Show();
richTextBox1.Text = str;
this.timer1.Interval = 100;
n = true;
hh = 0;
this.timer1.Enabled = false;
}
}
4.操作说明
4.1. 输入参数
4.2. 模拟效果
5.项目总结
利用SuperMap iObject.NET的MapControl控件的跟踪层TackingLayer可以动态完成小球的创建,结合Timer控件控制创建时间,达到模拟小球平抛运动的效果。
最新文章
- VS中的jQuery
- xbmc的静态链接办法
- hdu 4348 To the moon
- Dataset的基本操作
- STL迭代器笔记
- 纠结的NTP安装过程
- 1、Window10 Electron 开发环境搭建
- 使用KindEditor富文本编辑器,点击批量上传按钮没有选择图片按钮
- tomcat、weblogic、jboss的区别,容器的作用
- mystricpy的实现???
- core ML学习
- cobbler一键批量安装系统
- HDU 2665 Kth number(主席树静态区间第K大)题解
- matlab-调用摄像头人脸识别
- Python3学习之路~5.11 configparser模块
- python 全栈开发,Day20(object类,继承与派生,super方法,钻石继承)
- 【基础】iframe之间的切换(四)
- 阿里云centos 开启ipv6
- 1.String、StringBuffer与StringBuilder之间区别
- [转][solr] - 索引数据删除
热门文章
- Little Elephant and Array CodeForces - 220B (莫队)
- 牛客多校第3场 J 思维+树状数组+二分
- jdk8下面的ArrayList的扩容
- lambda应用
- 超简单!pytorch入门教程(四):准备图片数据集
- 如何看Crash 文件
- Controller中页面跳转完后页面的样式全消失的解决办法
- $cometoj\#4\ D\ $求和 不是$dp$
- $SP15637\ GNYR04H\ -\ Mr\ Youngs\ Picture\ Permutations$
- docker概述和基本命令