我有一些问题。
假设我有Q图标(简单的图标让我们说android徽标),我想将它们放置在针对单星中心(图标)的星形拓扑中,并在Android画布上连接它们。
我该怎么做?
任何确切的链接?
任何算法信息?
答案 0 :(得分:1)
基本上你想要做的是在中心周围创建点,给点一个图标和一条连接它们与中心的线。
在圆上创建2d点可以用余弦/正弦曲线完成:
double angle;
point.x = offsetX + radius*Math.cos(angle);
point.y = offsetY + radius*Math.sin(angle);
使用适当的值为每个接触点增加角度,并在数组或列表中存储这样的点
在绘图时,将图标以其点(yourCanvas.drawBitmap()
)为中心绘制,并在中心点(yourCanvas.drawLine()
)绘制一条线。
答案 1 :(得分:0)
public void starTopology(Canvas mCanvas,int noOfFriends,float centerX,float centerY,int radious) {
final double PI = 3.14;
final double MARGIN = (2*PI)/noOfFriends;
final double OFFSETX = centerX;
final double OFFSETY = centerY;
final int RADIUS = radious;
float pointXCoord = 0;
float pointYCoord = 0;
double NextPositionOnCircumference = MARGIN;
Paint myCustomizedBrush = new Paint();
myCustomizedBrush.setAntiAlias(true);
myCustomizedBrush.setColor(Color.WHITE);
for(int i= 0; i < noOfFriends; i++){
pointXCoord = (float) (OFFSETX + RADIUS * Math.cos(NextPositionOnCircumference));
pointYCoord = (float) (OFFSETY + RADIUS * Math.sin(NextPositionOnCircumference));
NextPositionOnCircumference += MARGIN;
mCanvas.drawLine((float)OFFSETX, (float)OFFSETY, pointXCoord, pointYCoord, myCustomizedBrush);
pointXCoord -= 10;
pointYCoord -= 10;
mCanvas.drawBitmap(Utility.FriendProfilePic.get(i), pointXCoord, pointYCoord, null);
}
mCanvas.drawCircle((float)OFFSETX, (float)OFFSETY, 5, myCustomizedBrush);
}