मैं एक निर्भरता ग्राफ पर काम कर रहा हूं जिसमें ग्राफ में एक नोड से दूसरे में कई नोड्स और कई निर्देशित किनारे होते हैं।

मैं एक रेखा के रूप में उन नोड्स के बीच सर्कल और किनारों के रूप में नोड्स की संख्या जोड़कर ग्राफ का एक दृश्य खींचने की कोशिश कर रहा हूं।

मैं जेपीनल और जेफ्रेम के साथ जावा की ग्राफिक्स लाइब्रेरी का उपयोग कर रहा हूं।

यह वर्तमान में मेरे द्वारा बनाया गया कोड है:

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);
        }


 }

मैं दो वृत्त और एक रेखा खींचने में सक्षम था लेकिन समस्या जो मुझे मिल रही है वह है उन दो वृत्तों को एक किनारे से जोड़ना।

मैंने प्रत्येक नोड को कैनवास पर एक यादृच्छिक स्थान पर खींचा है और उन दो नोड्स के बीच एक रेखा जोड़ना चाहता हूं। लाइन में प्वाइंट 1 (एक्स 1, वाई 1) और प्वाइंट 2 (एक्स 2, वाई 2) है। ये बिंदु दो अलग-अलग Node's(मंडलियों) की रूपरेखा पर बिंदु होने चाहिए

0
Muhammad Yasir Javed 28 मई 2019, 12:22

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)

नमूना डेल्फ़ी कार्यान्वयन और परिणाम: यहां छवि विवरण दर्ज करें

1
MBo 28 मई 2019, 13:17