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控件控制创建时间,达到模拟小球平抛运动的效果。

利用SuperMap iObjects.NET控件模拟小球平抛运动的更多相关文章

  1. 详解如何利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入

    我们先来简单了解一下WinForm和FarPoint,WinForm是·Net开发平台中对Windows Form的一种称谓.而FarPoint是一款模拟EXCEL的控件.它可以根据用户的要求实现很大 ...

  2. 利用foreach对页面控件的遍历 及三目运算符的使用

    1.利用foreach对页面控件的遍历 及三目运算符的使用 利用div将一组CheckBox放在一起用于遍历 <body> <form id="form1" ru ...

  3. C# WebBrowser控件 模拟登录 抓取数据

    参考博客:C#中的WebBrowser控件的使用 参考博客:C#中利用WebBrowser控件,获得HTML源码 一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容 ...

  4. C# WebBrowser控件模拟登录

    一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容,可以直接指定iframe抓取网址 2.C# 清除WebBrowser控件的Session和Cookie 参考文档 ...

  5. [C#]使用Label标签控件模拟窗体标题的移动

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.0及以 ...

  6. [C#]使用Label标签控件模拟窗体标题的移动及窗体颜色不断变换

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.0及以 ...

  7. WinForm使用Label控件模拟分割线(竖向)

    用Label控件进行模拟 宽度设为1:this.lblPagerSpliter1.Size = new System.Drawing.Size(1, 21); 去掉边框:this.lblPagerSp ...

  8. 利用PPT的WebBroswer控件助力系统汇报演示

    如何在PPT演示过程中无缝衔接演示系统成果?使用PPT自带的WebBroswer控件即可,相当于在PPT里嵌入了浏览器,在这个浏览器里打开系统进行操作演示. 环境:Windows 7 + Office ...

  9. c# 利用 两个TREEVIEW控件完成TEENODE的鼠标拖动操作

    功能说明: 我们有两个TREEVIEW控件——TREEVIEW1,TREEVIEW2.Treeview1内有三个NODE,Treeview2内有三个NODE.将Treeview1内的NODE拖动到Tr ...

随机推荐

  1. 牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树)

    牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树) 链接:https://ac.nowcoder.com/acm/problem/15706 现在需要您来帮忙维护这个名册, ...

  2. Z字形变换 leetcode 6

    一.按行存储 1.解题思路 1.通过当前行的不断上下循环移动 2.将字符按序存放入vector中 3.最后再按行取出 2.代码及注释 class Solution { public: string c ...

  3. DEVOPS技术实践_22:根据参数传入条件控制执行不同stage

    前面学习了参数的传递和调用,下面研究一下根据参数作为条件执行不同的stage 使用叫when 和expression控制某一个stage的运行, 运行场景例如写了多个stage,这个pipeline脚 ...

  4. 【题解】284E. Coin Troubles(dp+图论建模)

    [题解]284E. Coin Troubles(dp+图论建模) 题意就是要你跑一个完全背包,但是要求背包的方案中有个数相对大小的限制 考虑一个\(c_i<c_j\)的限制,就是一个\(c_i\ ...

  5. $CF311B\ Cats\ Transport$ 斜率优化

    AcWing Description Sol 设f[i][j]表示前i个饲养员接走前j只猫咪的最小等待时间. 要接到j猫咪,饲养员的最早出发时间是可求的,设为d: $ d[j]=Tj-\sum_{k= ...

  6. Asp.net Core Session 存储任意对象

    using Microsoft.AspNetCore.Http; using Newtonsoft.Json; public static class SessionExtensions { publ ...

  7. JS中的splice方法

    JS中的splice方法 定义和用法 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组(集合). 语法 arrayObject.splice(ind ...

  8. JVM系列五(javac 编译器).

    一.概述 我们都知道 *.java 文件要首先被编译成 *.class 文件才能被 JVM 认识,这部分的工作主要由 Javac 来完成,类似于 Javac 这样的我们称之为前端编译器: 但是 *.c ...

  9. [JavaScript设计模式] 什么是单例模式

    概念 保证一个类仅有一个实例,并提供一个全局访问点 为什么要用单例模式 想象一下某些web应用,当点击登录按钮时,会弹出一个登录框,无论你点击多少次这个登录按钮,登录框都只会出现一个,不会出现多个登录 ...

  10. 【转】在MyEclipse 8.6上搭建Android开发环境

    内容导航 第 1 页:基本环境准备 第 2 页:下载Android SDK 第 3 页:配置SDK环境变量 第 4 页:给MyEclipse安装ADT插件 第 5 页:配置MyEclipse 第 6 ...