利用SuperMap iObjects.NET控件模拟小球平抛运动

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

原文地址:https://www.cnblogs.com/liaozhidan/p/12217607.html

时间: 2024-10-19 23:49:01

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

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

1.利用foreach对页面控件的遍历 及三目运算符的使用 利用div将一组CheckBox放在一起用于遍历 <body> <form id="form1" runat="server"> <div> <asp:CheckBox ID="cb_1" runat="server" AutoPostBack="true" Text="我是自动的" o

WPF控件模拟双击事件

Action a = () => { i += 1; var timer = new System.Timers.Timer(800) { Interval = 600 }; timer.Elapsed += (sender, e) => { timer.Enabled = false; i = 0; }; timer.Enabled = true; if (i % 2 == 0) { i=0; timer.Enabled = false; //你的代码 } }; name_headChatW

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

参考博客:C#中的WebBrowser控件的使用 参考博客:C#中利用WebBrowser控件,获得HTML源码 一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容,可以直接指定iframe抓取网址 2.C# 清除WebBrowser控件的Session和Cookie 参考文档:http://www.360doc.com/content/14/0810/12/9200790_400769010.shtml 代码如下: [DllImport("wininet.d

模拟仪器仪表ActiveX(OCX)控件 - 模拟指针表

模拟指针仪表OCX控件Visual C++开发提供100个自定义属性,包括背景.量程.指针.标记.标记色带.标题.字体.图片等. 这是最初状态,默认状态,未定义任何属性 属性: 下面是精彩部分,自定义好的各种模拟表 一.仿奥迪汽车表盘 二.其他常用仪表 演示版下载地址: https://pan.baidu.com/s/1zg8VCnnqBeYThUvE3pCO0g 提取码: tv93 原文地址:https://www.cnblogs.com/steventian/p/12037234.html

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

如何在PPT演示过程中无缝衔接演示系统成果?使用PPT自带的WebBroswer控件即可,相当于在PPT里嵌入了浏览器,在这个浏览器里打开系统进行操作演示. 环境:Windows 7 + Office2013 效果截图(实际中将WebBroswer控件url指向到对应系统地址即可): 1.插入WebBroswer控件 在“PowerPoint选项”-“自定义功能区”右侧选项卡中勾选“开发工具”,将“开发工具”菜单显示在菜单栏上,并在其他控件中选择加入WebBroswer控件即可. 2.对WebB

利用Behavior来将控件页面与后台逻辑分离

首先定义一个Behavior类,该类中包含isEnable属性,并且可以做各种逻辑操作. 当isEnable改变时,可以动态调整逻辑.该逻辑可以实现获取所在控件并且定义控件的事件 前台页面调用改Behavior

蓝懿IOS利用所学的控件做小游戏

今天总体上收获很多感觉,开始学习时间很短,但是今天自己已经可以利用所学的知识做一个简单的类似小马过河的游戏.通过编写游戏可以把这几天所学到的UiButton,UiLabel,UiTextField等知识穿插到一起用. 其中小游戏的实现程序里,主要用到Nstimer来实现图片的自己移动,判断两个是否接触到用到新知识CGRectIntersectsRect 1,UiButton 通过storyboard拖动四个按钮,在程序中实现点击不同的按钮Button移动图片的上下左右 2,while 循环来实现

第二章实例:动态生成View控件例子---小球跟随手指滑动

package mydefault.packge; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle; import androi

教你轻松实现Material Design风格的知乎主页(详解多种控件的综合使用)

本文讲主要来说说Toolbar.RecyclerView.CardView.DrawerLayout.以及SwiperefreshLayout的综合使用,其中Toolbar和RecyclerView在前几篇博客已经详细讲述其用法了,有兴趣的可以去看看.现在利用这几个控件实现Material Design风格的知乎主页(Android v3.3版 知乎),在讲到相关控件的时候,我也会提及一下这个控件的用法.那么,让我们开始控件之旅吧. 示例效果 在动手写代码之前,我们先要看看最终的实现效果是什么: