Android编程绘制抛物线的方法示例

Android编程绘制抛物线的方法示例,第1张

概述本文实例讲述了Android编程绘制抛物线的方法。分享给大家供大家参考,具体如下:

本文实例讲述了AndroID编程绘制抛物线的方法。分享给大家供大家参考,具体如下:

package com.yarin.androID.Examples_05_04;import java.util.HashSet;import java.util.Iterator;import java.util.linkedList;import java.util.List;import java.util.Set;import androID.content.Context;import androID.graphics.Canvas;import androID.graphics.color;import androID.graphics.Paint;import androID.graphics.Rect;import androID.util.Log;import androID.vIEw.KeyEvent;import androID.vIEw.MotionEvent;import androID.vIEw.VIEw;import androID.Widget.Toast;public class GameVIEw extends VIEw implements Runnable{  /* 声明Paint对象 */  private Paint mPaint = null;  double maxS = 0;  double maxH = 0;  double maxT = 0;  double dx;  double dy;  double d;  MovingObject obj;  boolean isDraw=false;  public GameVIEw(Context context)  {    super(context);    /* 构建对象 */    mPaint = new Paint();    // 计算物体的最大高度、运动时间及最大射程    obj = new MovingObject(30,Math.PI / 4,color.RED);    // 运行时间    obj.T = 2 * obj.V0 * Math.sin(obj.Sita) / 9.8;    // 最大高度    obj.H = obj.V0 * obj.V0 * Math.sin(obj.Sita) * Math.sin(obj.Sita)        / (2 * 9.8);    // 最大射程    obj.Smax = 2 * obj.V0 * obj.V0 * Math.sin(obj.Sita)        * Math.cos(obj.Sita) / 9.8;    if (obj.Smax > maxS)    {      maxS = obj.Smax;    }    if (obj.H > maxH)    {      maxH = obj.H;    }    if (obj.T > maxT)    {      maxT = obj.T;    }    dx = (800 - 20) / maxS;    dy = (480 - 20) / maxH;    d = Math.min(dx,dy);    //最大运行时间    Log.v("TAG",String.valueOf(maxT));    //最大高度    Log.v("TAG",String.valueOf(maxH));    //最大射程    Log.v("TAG",String.valueOf(maxS));  }  public voID onDraw(Canvas canvas)  {    super.onDraw(canvas);    /* 设置画布的颜色 */    canvas.drawcolor(color.BLACK);    /* 设置取消锯齿效果 */    mPaint.setAntiAlias(true);    canvas.drawcolor(color.GREEN);    if(isDraw)    {      canvas.drawCircle((float)obj.X,(float)obj.Y,10,mPaint);    }  }  // 触笔事件  public boolean ontouchEvent(MotionEvent event)  {    switch (event.getAction())    {    case MotionEvent.ACTION_DOWN:      new Thread(this).start();      break;    }    return true;  }  public voID run()  {    for (double t = 0; t < maxT; t += 0.01)    {      Log.v("TAG",String.valueOf(t));      isDraw=true;      // 水平坐标      double x = obj.V0 * Math.cos(obj.Sita) * t;      // 竖直坐标      double y = obj.V0 * Math.sin(obj.Sita) * t - 9.8 * t * t / 2;      if (y < 0)      {        continue;      }      // 坐标转换      obj.X = 10 + d * x;      obj.Y = 480 - 10 - d * y;      try      {        Thread.sleep(10);      } catch (InterruptedException e)      {        Thread.currentThread().interrupt();      }      // 使用postInvalIDate可以直接在线程中更新界面      postInvalIDate();    }  }}class MovingObject{  // 重力加速度  public final double G = 9.8;  // / <summary>  // / 构造函数  // / </summary>  // / V0物体的初速度  // / Sita物体初速度与水平方向的夹角  // / color颜色  public MovingObject(double V0,double Sita,int red)  {    this.V0 = V0;    this.Sita = Sita;    this.color = red;  }  // / <summary>  // / 物体的初速度  // / </summary>  public double V0;  // / <summary>  // / 物体初速度与水平方向的夹角  // / </summary>  public double Sita;  // / <summary>  // / 物体的横坐标  // / </summary>  public double X;  // / <summary>  // / 物体的纵坐标  // / </summary>  public double Y;  // 物体的颜色  public int color;  // 要绘制的物体的矩形  public Rect GetobjectRectangle()  {    return new Rect((int) X - 3,(int) Y - 3,6,6);  }  // / <summary>  // / 最大射程  // / </summary>  public double Smax;  // / <summary>  // / 最大高度  // / </summary>  public double H;  // / <summary>  // / 运行时间  // / </summary>  public double T;}

更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《@L_502_2@》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家AndroID程序设计有所帮助。

总结

以上是内存溢出为你收集整理的Android编程绘制抛物线的方法示例全部内容,希望文章能够帮你解决Android编程绘制抛物线的方法示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1145981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存