سأكتب اليوم عن التنفيذ المتكرر لثبات Koch على مستوى K (تتطلب قيمة K للدخول يدويًا). أما بالنسبة لما هي الثلج كوخ ، يرجى بايدو.
أولاً ، دعونا نفكر في كيفية كتابة هذا البرنامج. عندما العد = 0 ، يجب أن يكون مثلث. يتم تحديد هذه النقاط الثلاث من البداية ، وستتطور التغييرات المستقبلية بناءً على هذه النقاط الثلاث. عندما لا يكون 0 ، تحتاج إلى حساب 9 نقاط نسبة إلى هذا المثلث ، وهما النقطتين على كل حافة ، والقمة الثالثة من المثلث المقابل له.
أولاً ، أضف لوحة في JFRAME ، ونحن بحاجة إلى رسم صورة على هذه اللوحة.
دعونا نلقي نظرة على هذه الصورة مرة أخرى. تقدم هذه الصورة عملية حساب النقاط الثلاث الأخرى من خلال نقطتين.
ابدأ الآن في الرسم في اللوحة:
فئة ثابتة showpanel يمتد jpanel {int number = 0 ؛ public void setNumber (int number) {this.number = number ؛ REPAINT () ؛ } Public void paintcomponent (Graphics g) {super.paintcomponent (g) ؛ // ارسم لوحة بسيطة int = (int) (math.min ((int) getWidth () ، (int) getheight ()*0.8) ؛ int High = (int) (side*math.cos (Math.Toradians (30))) ؛ النقطة P1 = نقطة جديدة (getWidth () / 2 ، 10) ؛ النقطة P2 = نقطة جديدة (getWidth () / 2 - Side / 2 ، 10 + High) ؛ النقطة P3 = نقطة جديدة (getWidth () / 2 + side / 2 ، 10 + High) ؛ playkochsnowflake (g ، number ، p1 ، p2) ؛ playkochsnowflake (g ، number ، p2 ، p3) ؛ playkochsnowflake (g ، number ، p3 ، p1) ؛ }الآن ابدأ في كتابة الوظائف العودية.
playkochsnowflake playkochsnowflake (الرسومات G ، رقم int ، النقطة P1 ، النقطة P2) {if (number == 0) {g.drawline (p1.x ، p1.y ، p2.x ، p2.y) ؛ } آخر {int deltax = p2.x - p1.x ؛ int deltay = p2.y - p1.y ؛ النقطة x = نقطة جديدة (p1.x + deltax / 3 ، p1.y + deltay / 3) ؛ النقطة y = نقطة جديدة (p1.x + deltax * 2/3 ، p1.y + deltay * 2/3) ؛ النقطة y = نقطة جديدة (p1.x + deltax * 2/3) ؛ النقطة z = نقطة جديدة ((int) ((p1.x + p2.x) / 2 + math.sin (math.toradians (60)) * (p1.y - p2.y) / 3) ، (int) ((p1.y + p2.y) / 2 + math.sin (math.toradians (60)) * (p2.x - p1.x) / 3) ؛ playkochsnowflake (g ، number - 1 ، p1 ، x) ؛ playkochsnowflake (g ، number - 1 ، x ، z) ؛ playkochsnowflake (g ، number - 1 ، z ، y) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، y ، p2) ؛ }}ثم أضف Jtextfield JTA إلى اللوحة الرئيسية. البيانات التي تدخلها هي أن يتم تمريرها إلى الرقم. لذا أضف مستمعًا إليه. إذا كان هناك بالفعل إدخال بيانات ، اتصل بوظيفة SetNumber () في ذلك لتعيين متغير الرقم.
jta.addActionListener (new ActionListener () {public void actionperformed (ActionEvent arg0) {spl.setNumber (integer.parseint (jta.gettext ())) ؛}}) ؛ بشكل عام ، تم الانتهاء منه ، والباقي هو إعدادات نموذج الإجابة المختصرة.
فيما يلي رمز Java الكامل:
استيراد java.awt.borderlayout ؛ استيراد java.awt.flowlayout ؛ استيراد java.awt.graphics ؛ استيراد java.awt.point ؛ استيراد java.awt.event.actionevent ؛ استيراد java.awt.event.actionListener ؛ استيراد javax.swing.jframe ؛ استيراد javax.swing.jlabel ؛ استيراد javax.swing.jpanel ؛ استيراد javax.swing.jtextfield ؛ يمتد Snowflake من الدرجة العامة Jframe {private Jtextfield JTA = New JTextField (5) ؛ showpanel spl = new showpanel () ؛ فئة ثابتة showpanel يمتد jpanel {int number = 0 ؛ public void setNumber (int number) {this.number = number ؛ REPAINT () ؛ } Public void paintcomponent (Graphics g) {super.paintcomponent (g) ؛ // ارسم لوحة بسيطة int = (int) (math.min ((int) getWidth () ، (int) getheight ()*0.8) ؛ int High = (int) (side*math.cos (Math.Toradians (30))) ؛ النقطة P1 = نقطة جديدة (getWidth () / 2 ، 10) ؛ النقطة P2 = نقطة جديدة (getWidth () / 2 - Side / 2 ، 10 + High) ؛ النقطة P3 = نقطة جديدة (getWidth () / 2 + side / 2 ، 10 + High) ؛ playkochsnowflake (g ، number ، p1 ، p2) ؛ playkochsnowflake (g ، number ، p2 ، p3) ؛ playkochsnowflake (g ، number ، p3 ، p1) ؛ } playkochsnowflake الثابتة العامة (الرسومات G ، رقم int ، النقطة P1 ، النقطة p2) {if (number == 0) {g.drawline (p1.x ، p1.y ، p2.x ، p2.y) ؛ } آخر {int deltax = p2.x - p1.x ؛ int deltay = p2.y - p1.y ؛ النقطة x = نقطة جديدة (p1.x + deltax / 3 ، p1.y + deltay / 3) ؛ النقطة y = نقطة جديدة (p1.x + deltax * 2/3 ، p1.y + deltay * 2/3) ؛ النقطة y = نقطة جديدة (p1.x + deltax * 2/3) ؛ النقطة z = نقطة جديدة ((int) ((p1.x + p2.x) / 2 + math.sin (math.toradians (60)) * (p1.y - p2.y) / 3) ، (int) ((p1.y + p2.y) / 2 + math.sin (math.toradians (60)) * (p2.x - p1.x) / 3) ؛ playkochsnowflake (g ، number - 1 ، p1 ، x) ؛ playkochsnowflake (g ، number - 1 ، x ، z) ؛ playkochsnowflake (g ، number - 1 ، z ، y) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، z) ؛ playkochsnowflake (g ، number - 1 ، y ، p2) ؛ }}} snowflake public () {jpanel panel = new jpanel () ؛ panel.setLayout (New FlowLayout ()) ؛ Panel.add (New Jlabel ("الرجاء إدخال الرقم")) ؛ Pane.add (JTA) ؛ إضافة (SPL ، BorderLayout.Center) ؛ إضافة (لوحة ، borderlayout.south) ؛ jta.addActionListener (new ActionListener () {public void actionperformed (ActionEvent arg0) {spl.setNumber (integer.parseint (jta.gettext ())) ؛}}) ؛ } public static void main (String args []) {Snowflake Snowflake = new Snowflake () ؛ Snowflake.setsize (300 ، 300) ؛ Snowflake.Settitle ("Snowflake") ؛ Snowflake.setLocationRelativeto (NULL) ؛ Snowflake.setVisible (صحيح) ؛ }}صورة التكاثر:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.