亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在兩個節點(圓)之間繪制邊(線)

在兩個節點(圓)之間繪制邊(線)

HUH函數 2022-12-21 11:59:28
我正在研究一個依賴圖,它由圖中的多個節點和從一個節點到另一個節點的多個有向邊組成。我試圖通過在這些節點之間添加 n 個節點作為圓圈和邊緣作為一條線來繪制圖形的可視化。我將 Java 的圖形庫與 JPanel 和 Jframe 一起使用。這是目前我所做的代碼:public class LoopUnrolling extends JPanel{static int length = 5;static String graph[][] = new String[length][length];@Overridepublic 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)。這些點應該是兩個不同節點(圓)輪廓上的點
查看完整描述

1 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

你有兩個帶中心的橢圓


 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 實現和結果:

http://img1.sycdn.imooc.com//63a285030001492304190352.jpg

查看完整回答
反對 回復 2022-12-21
  • 1 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號