我绘制了一条基于滑块的角度线。
我试图让线的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));
}
答案 0 :(得分:2)
这可能是一种更简单的方法,但基本上,你可以根据角度和角度的倒数计算圆上的两个点(角度 - 360)
使用半径为150的圆,这将为您提供300行,例如
红线是从圆心到指定天使所代表的圆的点。蓝色是相反的。每行是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] } );
}
或类似的东西......