绘制线 - 最大点

时间:2015-05-14 02:05:31

标签: java 2d line coordinates

我绘制了一条基于滑块的角度线。

我试图让线的Y端坐标一定数量(让我们说300),即使它是一个角度。

关于如何做到这一点的任何想法?到目前为止,这是我的工作:

double angle = intAngle;
angle = angle * Math.PI / 180;
double length = 300;

graphics.setColor(Color.RED);

double startX = 300;
double startY = 100;
double endX = startX + length * Math.cos(angle);
double endY = startY + length * Math.sin(angle);
double end2X;
double end2Y;   
double dblAngle;
double angle2;
int intAngle2;
double start2X = endX;
double start2Y = endY;
intAngle2 = 180 - intAngle;
angle2 = intAngle2;
angle2 = (angle2 * Math.PI / 180);
end2X = (start2X - length * Math.cos(angle2));
end2Y = (start2Y - length * Math.sin(angle2));

int intEndX = (int)endX;
int intEndY = (int)endY;

if(blnButton == true){

  graphics.draw(new Line2D.Double(startX, startY, endX, endY));    

  graphics.draw(new Line2D.Double(start2X, start2Y, end2X, end2Y));       

}

1 个答案:

答案 0 :(得分:2)

这可能是一种更简单的方法,但基本上,你可以根据角度和角度的倒数计算圆上的两个点(角度 - 360)

使用半径为150的圆,这将为您提供300行,例如

Example

红线是从圆心到指定天使所代表的圆的点。蓝色是相反的。每行是150像素的线,意思是在一起,它们的长度是300像素。

此示例单独绘制,但实际上,它们可以绘制为单行

var numberOfData = 4;
var a = [];
for (var i = 0; i < numberOfData; i++) {
  var color = (i%2 === 0) ? 'green' : 'red';
  var index = Math.floor(i/2);
  var stat = {data: []};
  stat.data.push( self.dataSeries[index].data.filter(function (x) { return x.color == color }) );
  a.push( {data: stat.data[0] } );
}

或类似的东西......