当前位置: 首页 > 知识库问答 >
问题:

在java中使用sin和cos使一个圆做圆周运动

郭均
2023-03-14

我正在创建一个程序,该程序具有一个圆形对象,该对象在画布上以圆周运动移动。我已经创建了圆圈和渲染类,现在正在移动。到目前为止,这是我的代码,不幸的是它不起作用。我不确定从这里走向何方,或者我是否走在正确的轨道上。

import java.util.*;

public class Rotation
{
  public static void main(String[] args)
  {
    int x;
    int y;
    int radius = 30;
    double step = .01;

    Scanner input = new Scanner(System.in);
    Render render = new Render();
    Circle c = new Circle(150,150,radius);

    render.addCircle(c);
    render.draw();
    double angle = 0.0;

   while (angle < step)
   {

     x = (int)(c.getX()+Math.cos(angle*2*(Math.PI))*radius);
    y = (int)(c.getY()+Math.sin(angle*2*(Math.PI))*radius);

    c.setX(x);
    c.setY(y);

    render.redraw();
   }
  }
}

共有2个答案

施恩
2023-03-14

< code>while(角度

南宫鸿晖
2023-03-14

你的while循环是错误的。如果将值替换为

while(angle < step)

成为

while(0 < 0.01)

但这并不重要,因为你实际上并没有在任何地方增加角度。也许你应该按步长递增角度,直到圆满为止(即2*Math.PI)。

 类似资料:
  • 使用另一个问题中的代码,我在tkinter窗口中嵌入了一个pygame窗口,我试图制作一个tkbutton,在pygame窗口上画一个圆圈,已经试验了一段时间,到目前为止还没有任何结果。任何想法都会很棒!这是我到目前为止的代码。。。

  • 本文向大家介绍请使用canvas画一个椭圆相关面试题,主要包含被问及请使用canvas画一个椭圆时的应答技巧和注意事项,需要的朋友参考一下 <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.beginPath(); ctx.arc(95,50,40,0,2*Math.PI); ct

  • 问题内容: 我有点麻烦。我有一项作业,要求我找出第二个圆圈是否重叠,内部是否重叠或两者都不存在。但是,我在检查重叠以及第二个圆是否在第一个圆内时遇到了麻烦。 (使用的变量为x1,x2,y1,y2,r1,r2,距离) 这是我所拥有的: 我担心问题在于重叠和内部检查,但是我无法弄清楚如何正确设置它,因此我可以可靠地检查第二个圆是否在第一个圆的内部。 当我尝试了多种方法时,任何帮助或建议都将不胜感激,但

  • 形状不一定始终沿着直线运动。如果你需要的动画效果是沿着圆周运动,例如,沿着圆形轨道运行(如图1所示)该如何实现呢?这是完全可以实现的,并且不需要使用太多代码,这里需要使用三角函数的相关知识,可能需要你稍微动一下脑筋。 使形状动画沿着圆形轨道运动 概念非常简单:将一个形状放在圆周的边缘处(它的周长上),以圆周的任意位置作为起点。但为了简单起见,可以将形状放在周长上角度为0弧度的位置,该位置位于右手边

  • 我一直在做一个学校作业,老师想让我们在JPanel上出现7个圆圈,然后向下移动。一旦一个圆到达底部,就应该创建一个新的圆来替换到达JPanel底部的圆。我决定用一个数组继续做随机圈,但我不能让它正常工作。我使用for循环用半径和颜色随机的圆填充数组。代码可以编译,但当我运行它时,我得到一个异常。我很难让阵列正常工作。我不确定的另一件事是如何绘制圆圈,以便它们在JPanel中有空间。

  • 问题内容: 因此,我有一个应用程序可以根据按下键盘上的哪个按钮成功地向左,向右,向上或向下移动球(椭圆)。但是,我无法使球倾斜移动。我试图通过说如果用户按住2个方向键,则球将沿对角线进入。例如,如果他们单击向左键和向上键,则我希望球沿西北方向移动。如果你们中有人发现问题的根源,我将非常感谢您的帮助! 发动机 CircleComponent 问题答案: 因为键事件将仅报告触发事件的最后一个键,所以您