在两个节点(圆)之间绘制边(线)

我正在研究一个依赖图,它由图中的多个节点和从一个节点到另一个节点的多个有向边组成。


我试图通过在这些节点之间添加 n 个节点作为圆圈和边缘作为一条线来绘制图形的可视化。


我将 Java 的图形库与 JPanel 和 Jframe 一起使用。


这是目前我所做的代码:


public class LoopUnrolling extends JPanel{



static int length = 5;

static String graph[][] = new String[length][length];



@Override

public void paintComponent(Graphics g){


    super.paintComponent(g);


    Random random = new Random();


    int x1 = random.nextInt(500);

    int y1 = random.nextInt(100);


    int x2 = random.nextInt(500);

    int y2 = random.nextInt(100);


    g.setColor(Color.red);

    g.drawOval(x1,y1,30,40);

    g.drawOval(x2,y2,30,40);

    g.drawLine(x1, y1, x2, y2);




}

public static void main(String[] args) {


         LoopUnrolling paintObject = new LoopUnrolling();

         JFrame jf = new JFrame();

         jf.setTitle("Dependancy Graph");

         jf.setSize(600,400);

         jf.setVisible(true);

         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         jf.add(paintObject);

        }



 }

我能够画两个圆圈和一条线,但 我遇到的问题是用边连接这两个圆圈。


我在画布上的随机位置绘制了每个节点,并想在这两个节点之间添加一条线。该线具有 Point1(x1,y1) 和 Point2(x2,y2)。这些点应该是两个不同节点(圆)轮廓上的点


HUH函数
浏览 92回答 1
1回答

尚方宝剑之说

你有两个带中心的椭圆 cx1 = x1 + w1/2, cy1 = y1 + h1/2  and  cx2 = x2 + w2/2, cy2 = y2 + h2/2 其中 wxx 和 hxx 是椭圆的宽度和高度( 的第三个和第四个参数drawOval)获取差异向量 dx = cx2 - cx1 dy = cy2 - cy1规范化 len  = sqrt(dx*dx + dy*dy) dx = dx / len dy = dy / len现在计算圆周上的点 r1 = 0.5 * w1 * h1 / sqrt(w1*w1*dy*dy+h1*h1*dx*dx) px1 = cx1 + r1 * dx py1 = cy1 + r1 * dy r2 = 0.5 * w2 * h2 / sqrt(w2*w2*dy*dy+h2*h2*dx*dx) px2 = cx2 - r2 * dx py2 = cy2 - r2 * dy并绘制线段(px1,py1)-(px2,py2)示例Delphi 实现和结果:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java