Javascript 计算椭圆点的意外结果

Javascript 计算椭圆点的意外结果,javascript,processing,p5.js,Javascript,Processing,P5.js,我试着从椭圆的中心到边界的任意点画一条线。基本上,我的代码是我不久前做的一些js代码的复制粘贴。我用的是帆布和香草js 我的代码: var o; function setup() { createCanvas(500, 500); o = ellipseGetRandomPoint(250,250,200,300); } function draw() { background(220); stroke("black"); fill("#333333"); ellips

我试着从椭圆的中心到边界的任意点画一条线。基本上,我的代码是我不久前做的一些js代码的复制粘贴。我用的是帆布和香草js

我的代码:

var o;
function setup() {
  createCanvas(500, 500);
  o = ellipseGetRandomPoint(250,250,200,300);
}

function draw() {
  background(220);
  stroke("black");
  fill("#333333");
  ellipse(250,250,300,400);

  stroke("red")
  line(250,250,o.pointX, o.pointY);
  console.log(o);
  fill("#999999");
  stroke(0);
  ellipse(250,250,200,300);
}

function ellipseGetRandomPoint(centerX, centerY, radiusX, radiusY) {
    let o = {};
    r = Math.floor(Math.random()*360);
    pointX = centerX + radiusX * Math.cos(r*Math.PI / 180);
    pointY = centerY + radiusY * Math.sin(r*Math.PI / 180);
    o.pointX = Math.floor(pointX);
    o.pointY = Math.floor(pointY);
    o.r = r;
    return o;
}

问题是这条线有一部分在椭圆外,我真的不知道为什么,因为抛物线的参数方程似乎还可以,而且我的另一个js程序也在使用这段代码的一个非常类似的版本。

的第三个和第四个参数是椭圆的宽度和高度,而不是半轴

因此,
ellipseGetRandomPoint
的参数必须是
150200
,而不是
200300

o=ellipseGetRandomPoint(250250200300)

o=ellipseGetRandomPoint(250150200);
请参见示例:

var角度=0;
函数设置(){
createCanvas(500500);
}
函数绘图(){
设o=ellipseGetRandomPoint(250150200);
角度+=1;
背景(220);
中风(“黑色”);
填充(“333333”);
椭圆(250300400);
笔划(“红色”)
线(250250,o.pointX,o.pointY);
控制台日志(o);
填充(“999999”);
冲程(0);
椭圆(250200300);
}
函数ellipseGetRandomPoint(centerX、centerY、radiusX、radiusY){
设o={};
r=数学地板(数学随机()*360);
r=角度;
pointX=centerX+radiusX*Math.cos(r*Math.PI/180);
pointY=centerY+radiusY*Math.sin(r*Math.PI/180);
o、 pointX=数学地板(pointX);
o、 pointY=数学地板(pointY);
o、 r=r;
返回o;
}