-2

我有一些问题。

假设我有 Q 图标(简单的图标,比如说 android 徽标),我想将它们放在星形拓扑中,与单个星形中心(图标)相对,并将它们连接到 android 画布上。

在此处输入图像描述

我该怎么做?

任何确切的链接?

任何算法信息?

4

2 回答 2

1

基本上你要做的是围绕一个中心创建点,给这些点一个图标和一条将它们与中心连接起来的线。
可以使用余弦/正弦在圆上创建二维点:

double angle;
point.x = offsetX + radius*Math.cos(angle);
point.y = offsetY + radius*Math.sin(angle);

为每个接触增加适当的角度值,并将这样的点存储在数组或列表中。
当涉及到绘图时,以它的点 ( yourCanvas.drawBitmap()) 为中心画你的图标,然后画一条线到中心点 ( yourCanvas.drawLine())。

于 2011-12-20T13:13:26.033 回答
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);

}

于 2011-12-22T11:45:12.130 回答