מה יצא הציור?

עמוד
מוצגות 6 תגובות – 1 עד 6 (מתוך 6 סה״כ)
  • מאת
    תגובות
  • #76934
    CodeGuru
    מנהל בפורום

    בהנתן משולש המוגדר על ידי שלוש הנקודות

    a_1, a_2, a_3

    בחר נקודה מקרית

    p_0

    וחזור 

    n

    פעמים על התהליך בו מוגדרת הנקודה הבאה

    p_{t+1}

    כממוצע בין הנקודה הקודמת

    p_t

    לבין קודקוד מקרי של המשולש.

    איך תראה קבוצת הנקודות

    p_1, p_2, … , p_n ?

     

    ותודה לישי על השאלה.

    #78287
    CodeGuru
    מנהל בפורום

    אפשר לכתוב "שורד" פשוט של קודגורו אקסטרים שיעשה זאת.

    #78264
    yoav zilberman
    משתתף

    הציור יצא אליפסה שכן אליפסה מוגדרת כממוצע כל הנקודות שלה.

    #78263
    CodeGuru
    מנהל בפורום

    ניסיון יפה אבל התשובה לא נכונה.

    #78262
    yoav zilberman
    משתתף

    הרצתי את זה בויזואל בייסיק ויצא לי משולש בצבע שחור שבתוכו עוד מספר משולשים

     בצבע המסך (הצבע השחור בגלל צבע הנקודות)

    קטע הקוד הוא:

    Option Explicit
    Private Sub Form_Load()
    Dim a1x As Integer
    Dim a1y As Integer
    Dim a2x As Integer
    Dim a2y As Integer
    Dim a3x As Integer
    Dim a3y As Integer
    Dim px As Integer
    Dim py As Integer
    Dim pnx As Integer
    Dim pny As Integer
    Dim index As Integer
    Dim i As Integer
    a1x = 7 + Math.Rnd() * (Me.ScaleWidth – 14)
    a1y = 7 + Math.Rnd() * (Me.ScaleHeight – 14)
    a2x = 7 + Math.Rnd() * (Me.ScaleWidth – 14)
    While (a1x = a2x)
       a2x = 7 + Math.Rnd() * (Me.ScaleWidth – 14)
    Wend

    a2y = 7 + Math.Rnd() * (Me.ScaleHeight – 14)
    While (a2y = a1y)
        a2y = 7 + Math.Rnd() * (Me.ScaleHeight – 14)
    Wend
    a3x = 7 + Math.Rnd() * (Me.ScaleWidth – 14)
    While (a3x = a2x Or a3x = a1x)
        a3x = 7 + Math.Rnd() * (Me.ScaleWidth – 14)
    Wend
    a3y = 7 + Math.Rnd() * (Me.ScaleHeight – 14)
    While (a3y = a2y Or a3y = a1y)
       a3y = 7 + Math.Rnd() * (Me.ScaleHeight – 14)
    Wend
    While ((a3y – a2y) / (a3x – a2x) = (a2y – a1y) / (a2x – a1x))
        a3x = 7 + Math.Rnd() * (Me.ScaleWidth – 14)
        a3y = 7 + Math.Rnd() * (Me.ScaleHeight – 14)
    Wend
     px = 7 + Math.Rnd() * (Me.ScaleWidth – 14)
     While (px = a1x Or px = a2x Or px = a3x)
        px = px = 7 + Math.Rnd() * (Me.ScaleWidth – 14)
     Wend
     py = 7 + Math.Rnd() * (Me.ScaleHeight – 14)
     While (py = a1y Or py = a2y Or py = a3y)
        py = 7 + Math.Rnd() * (Me.ScaleHeight – 14)
     Wend
     
     
     For i = 1 To 30000 Step 1
        index = Math.Rnd() * 3
        If index = 1 Then
            pnx = (px + a1x) / 2
             pny = (py + a1y) / 2
              'Me.Line (px, py)-(pnx, pny)
            px = pnx
            py = pny
             Me.Circle (pnx, pny), 3
       
         End If
     
        If index = 2 Then
            pnx = (px + a2x) / 2
             pny = (py + a2y) / 2
            ' Me.Line (px, py)-(pnx, pny)
             px = pnx
              py = pny
             Me.Circle (pnx, pny), 3
       
         End If
     
         If index = 3 Then
             pnx = (px + a3x) / 2
             pny = (py + a3y) / 2
             ' Me.Line (px, py)-(pnx, pny)
              px = pnx
             py = pny
             Me.Circle (pnx, pny), 3
       
        End If
       
     Next i
     End Sub

    האם התשובה נכונה?

    נ.ב.

    זהו סוג של פרקטל ושמו משולש סירפינסקי!

    האם התשובה נכונה?

    סלח לי על הבורות של השאלה הקודמת הבנתי אותה כממוצע הנקודות ולא ממוצע של נקודה עם נקודה אקראית על משולש.
     

    #78261
    CodeGuru
    מנהל בפורום

    תשובה נכונה – כל הכבוד.

    אפשר לכתוב "שורד" קודגורו אקסטרים קצר יותר שעושה זאת.

    נתראה ביום שלישי

מוצגות 6 תגובות – 1 עד 6 (מתוך 6 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.