منحنی گوسپر
منحنی Gosper در ، همچنین به عنوان شناخته شده پیانو-Gosper در منحنی ، [1] به نام پس از بیل Gosper در ، همچنین به عنوان شناخته شده flowsnake (یک اشتباه در تلفظ حروف از برف ریزه )، یک است منحنی فضای پر کردن که مجموعه ای محدود است هرزه -7. این منحنی فراکتال است که در ساختارش شبیه به منحنی اژدها و منحنی هیلبرت است .
از منحنی Gosper نیز می توان برای خوشه بندی و نمایه سازی شش ضلعی سلسله مراتبی کارآمد استفاده کرد. [2]
فهرست
الگوریتم [ ویرایش ]
سیستم Lindenmayer [ ویرایش ]
منحنی Gosper را می توان با استفاده از یک سیستم L با قوانینی به شرح زیر نشان داد:
- زاویه: 60 درجه
- اصل:
- قوانین جایگزینی:
در این حالت ، هر دو A و B به معنای حرکت به جلو ، + به معنای چرخاندن سمت چپ 60 درجه و - به معنای چرخاندن راست 60 درجه - با استفاده از یک برنامه "لاک پشت" استایل مانند آرم است .
to rg :st :ln make "st :st - 1 make "ln :ln / sqrt 7 if :st > 0 [rg :st :ln rt 60 gl :st :ln rt 120 gl :st :ln lt 60 rg :st :ln lt 120 rg :st :ln rg :st :ln lt 60 gl :st :ln rt 60] if :st = 0 [fd :ln rt 60 fd :ln rt 120 fd :ln lt 60 fd :ln lt 120 fd :ln fd :ln lt 60 fd :ln rt 60] end to gl :st :ln make "st :st - 1 make "ln :ln / sqrt 7 if :st > 0 [lt 60 rg :st :ln rt 60 gl :st :ln gl :st :ln rt 120 gl :st :ln rt 60 rg :st :ln lt 120 rg :st :ln lt 60 gl :st :ln] if :st = 0 [lt 60 fd :ln rt 60 fd :ln fd :ln rt 120 fd :ln rt 60 fd :ln lt 120 fd :ln lt 60 fd :ln] end
The program can be invoked, for example, with rg 4 300, or alternatively gl 4 300.
Python[edit]
A Python program, that uses the aforementioned L-System rules, to draw the Gosper curve using turtle graphics (online version):
import turtle def gosper_curve(order: int, size: int, is_A: bool = True) -> None: """Draw the Gosper curve.""" if order == 0: turtle.forward(size) return for op in "A-B--B+A++AA+B-" if is_A else "+A-BB--B-A++A+B": gosper_op_map[op](order - 1, size) gosper_op_map = { "A": lambda o, size: gosper_curve(o, size, True), "B": lambda o, size: gosper_curve(o, size, False), "-": lambda o, size: turtle.right(60), "+": lambda o, size: turtle.left(60), } size = 10 order = 3 gosper_curve(order, size)
خواص [ ویرایش ]
فضای پر شده توسط منحنی را جزیره گاسپر می نامند . چند تکرار اول از آن در زیر نشان داده شده است:
![]() | ![]() | ![]() | ![]() | ![]() |
جزیره Gosper می تواند هواپیما را کاشی کند . در حقیقت ، می توان هفت نسخه از جزیره Gosper را به یکدیگر پیوند داد تا شکلی شبیه به هم داشته باشد ، اما با یک فاکتور 7 پوند در همه ابعاد تقسیم می شود. همانطور که از نمودار زیر مشاهده می شود ، انجام این عمل با تکرار متوسط این جزیره منجر به یک نسخه کوچک شده از تکرار بعدی می شود. تکرار این روند به طور نامحدود به تولید موزاییک کاری از هواپیما. منحنی خود به همین ترتیب می تواند به یک منحنی نامحدود که تمام صفحه را پر می کند ، گسترش یابد.
![]() | ![]() |