文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-05-31 01:17

关注

本文实例讲述了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{    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;}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯