Renobatio Δημοσ. 8 Νοεμβρίου 2013 Δημοσ. 8 Νοεμβρίου 2013 Θα ήθελα την βοήθεια σας γιατί έχω κολλήσει μέρες και ίσως να ναι κάτι που δεν βλέπω. 'Εχω έναν κώδικα που σχεδιάζει ένα δίκτυο γραμμών πρακτικά σχεδιάζει τόξα. import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; public class paint extends Stereonet2{ paint (int x,int y,int radius,Color colour){ super (x,y,radius,colour); } @Override protected void paintComponent(Graphics g){ super.paintComponent(g); System.out.println("ppp"); Graphics2D g2D = (Graphics2D) g; g2D.setStroke(new BasicStroke(2F)); g.setColor(Color.BLACK); g.drawOval(centreX - radius , centreY - radius, radius * 2 , radius * 2); g2D.setStroke(new BasicStroke(1F)); g.drawLine(centreX, centreY - radius, centreX, centreX + radius); g.drawLine(centreX - radius, centreY, centreX + radius, centreY); g2D.setStroke(new BasicStroke(1F)); for(int degrees = 10; degrees <= 80; degrees += 10){ double greatRadius = radius / (Math.cos(Math.toRadians(degrees))); // radius of great circle int greatX1 = (int)Math.round(centreX + radius * (Math.tan(Math.toRadians(degrees))) - greatRadius); // x coord of great circle left hemisphere int greatX2 = (int)Math.round(centreX - (radius * (Math.tan(Math.toRadians(degrees)))) - greatRadius); // x coord of great circle right hemisphere int greatY = (int)Math.round(centreY - greatRadius); // y coord of great circle double smallRadius = (radius / (Math.tan(Math.toRadians(degrees)))); int smallY1 = (int)Math.round((centreY - (radius / (Math.sin(Math.toRadians(degrees)))) - smallRadius)); int smallY2 = (int)Math.round((centreY + (radius / (Math.sin(Math.toRadians(degrees)))) - smallRadius)); int smallX = (int)Math.round(centreX - smallRadius); g.drawArc(greatX1, greatY, 2 * (int)Math.round(greatRadius), 2 * (int)Math.round(greatRadius), 90 + degrees, 180 - ( 2 * degrees)); g.drawArc(greatX2, greatY, 2 * (int)Math.round(greatRadius), 2 * (int)Math.round(greatRadius), 270 + degrees, 180 - ( 2 * degrees)); g.drawArc(smallX, smallY1, 2 * (int)Math.round(smallRadius), 2 * (int)Math.round(smallRadius), 270 - degrees, 180 - ( 2 * (90 - degrees))); g.drawArc(smallX, smallY2, 2 * (int)Math.round(smallRadius), 2 * (int)Math.round(smallRadius), 90 - degrees, 180 - ( 2 * (90 - degrees))); } } Τώρα θέλω χρησιμοποιώντας τις ιδιότητες της καμπύλης με το κόκκινο χρώμα όπως το ύψος το πάχος της κλπ να την μετακινήσω αριστερόστροφα κατα 30 μοίρες δηλαδή να ζωγραφιστεί ένα έξτρα τόξο στη θέση της γαλάζιας γραμμής. Το θέμα είναι ότι η drawArc θεωρείται ως εγγεγραμένη σε ορθογώνιο παραλληλόγραμμο για να φτιάξω αυτόν τον κύκλο με τα τόξα του ήταν σχετικά εύκολο γιατί η εξισώσεις βρίσκονται online απλά τροποποιήθηκαν με την Math.round γιατι η drawArc παίρνει int κλπ τωρα άν προσθέσω στο startAngle +30 μπακάλικα σε δοκιμές (γιατι το + θεωρεί αριστεροστροφη κίνηση σύμφωνα με το documentation) για να "ζωγραφίσω" την γαλάζια θα μετατεθει αλλα σαν να κινειται σε παραλληλόγραμμο και οχι σε κυκλο οπότε θα βρεθεί όπου να ναι. Συγνώμη αν σας ζάλισα κάθε βοήθεια δεκτή.
παπι Δημοσ. 8 Νοεμβρίου 2013 Δημοσ. 8 Νοεμβρίου 2013 Θες να περιστρεφεται απνω στην σφαιρα; Ή απλα πανω στον z αξονα;
Renobatio Δημοσ. 8 Νοεμβρίου 2013 Μέλος Δημοσ. 8 Νοεμβρίου 2013 Θες να περιστρεφεται απνω στην σφαιρα; Ή απλα πανω στον z αξονα; Με μπέρδεψε η αναφόρα σου σε σφαίρα και αξονα z εκτός και αν γνωριζεις εκ των προτέρων την χρήση του δικτύου Schmidt(που πρακτικά είναι αυτό που έφτιαξα). Αλλα ναι θελω να βρισκεται μέσα στον κύκλο. Θεωρησε κεντρο του κυκλου (0,0) χρειάζομαι να κινηθεί η κόκκινη γραμμή αριστερόστροφα διατηρώντας το κεντρο του κυκλου και φυσικα όπως ανεφερα και όλες τις άλλες ιδιοτητες της την καμπυλοτητα της το μήκος της το πάχος της κλπ. Δεν ξέρω αν σε βοήθησα να καταλαβεις...
παπι Δημοσ. 8 Νοεμβρίου 2013 Δημοσ. 8 Νοεμβρίου 2013 Δεν εχω ιδεα το τιε ιανι schmidt. Αν καταλαβα θες να το περιστρεψεις στον αξονα ζ. Απο ενα google βλεπω οτι το graphic2d εχει affine transformation. Αρα ειναι απλο αυτο που θες. Πριν ζωγραφισεις αυτο που θες, καλεσε την rotate (εχει δυο, μια που παιρνει γωνια και μια που παιρνει γωνια και "κεντρο" ) Εφοσον σεταρεις το transformation ζωγραφισε το τοξο που θες να περιστρεψεις.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα