2 คะแนน โดย GN⁺ 2025-11-01 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โปรเจ็กต์ที่ใช้ Three.js เพื่อสร้างภาพ ตัวดึงดูดประหลาด (Strange Attractors) แสดงให้เห็นกระบวนการที่สมการคณิตศาสตร์อย่างง่ายสามารถสร้างรูปแบบที่ซับซ้อนและสวยงามได้
  • อธิบายแนวคิดพื้นฐานของ ระบบพลวัต (Dynamical Systems) และ ทฤษฎีความโกลาหล (Chaos Theory) โดยมุ่งเน้นที่สถานะของระบบที่เปลี่ยนแปลงไปตามเวลาและกฎที่กำหนดวิวัฒนาการของมัน
  • ตัวดึงดูดประหลาด ถูกนิยามด้วยคุณลักษณะ 4 ประการ ได้แก่ โครงสร้างแฟรกทัล ความไวต่อเงื่อนไขตั้งต้น วิถีไม่เป็นคาบ และระเบียบที่ซ่อนอยู่ในความโกลาหล
  • แสดง ผลกระทบผีเสื้อ (Butterfly Effect) ผ่านภาพของ Thomas Attractor พร้อมนำเสนอว่าการเปลี่ยนแปลงเล็กน้อยของพารามิเตอร์ a สามารถสร้างรูปแบบที่แตกต่างกันโดยสิ้นเชิงได้อย่างไร
  • ใช้เทคนิค ping-pong rendering บน GPU เพื่อคำนวณและเรนเดอร์อนุภาคหลายพันตัวอย่างมีประสิทธิภาพ จนสามารถแสดงผลแบบเรียลไทม์ได้

ระบบพลวัตและทฤษฎีความโกลาหล

  • ระบบพลวัต คือวิธีการสร้างแบบจำลองทางคณิตศาสตร์ของปรากฏการณ์ที่เปลี่ยนแปลงไปตามเวลา โดยมีตัวอย่างหลากหลาย เช่น การเคลื่อนที่ของดาวเคราะห์ การเติบโตของประชากร และตลาดหุ้น

    • ประกอบด้วย ปริภูมิสถานะ (Phase Space) ที่แสดงสถานะทั้งหมดที่เป็นไปได้ของระบบ และ พลวัต (Dynamics) ที่ทำให้ระบบเปลี่ยนจากสถานะหนึ่งไปสู่อีกสถานะหนึ่ง
    • ตัวอย่างเช่น ในแบบจำลองการเติบโตของประชากร ขนาดประชากรและอัตราการเติบโตจะเป็นสถานะในปริภูมิสถานะ ขณะที่อัตราการเกิด อัตราการตาย และขีดความสามารถในการรองรับของสิ่งแวดล้อมจะเป็นตัวกำหนดพลวัต
  • ทฤษฎีความโกลาหล (Chaos Theory) คือสาขาที่ศึกษาระบบที่คาดการณ์ได้ยาก โดยปรากฏการณ์จำนวนมากในธรรมชาติจัดอยู่ในกลุ่ม ระบบไม่เชิงเส้นและไวต่อการเปลี่ยนแปลง เช่นนี้

    • อธิบายปรากฏการณ์ที่แม้จะมีกฎอยู่ แต่กลับไม่สามารถคาดการณ์ได้เนื่องจากข้อมูลไม่สมบูรณ์
    • ลักษณะเด่นที่สำคัญคือ ผลกระทบผีเสื้อ ซึ่งความแตกต่างเล็กน้อยของเงื่อนไขตั้งต้นสามารถเปลี่ยนผลลัพธ์ได้อย่างมาก

ตัวดึงดูด (Attractor) และตัวดึงดูดประหลาด (Strange Attractor)

  • ตัวดึงดูด (Attractor) คือชุดของสถานะที่ระบบจะค่อย ๆ ลู่เข้าเมื่อเวลาผ่านไป เช่น จุดหยุดนิ่งของลูกตุ้ม

    • การลู่เข้าสู่ตัวดึงดูดเกิดจากปัจจัยอย่าง เสถียรภาพ, การสูญเสียพลังงาน (Dissipation) และ การหดตัว (Contraction)
  • ตัวดึงดูดประหลาด (Strange Attractor) คือตัวดึงดูดที่แสดงวิถีซึ่งคาดการณ์ได้ยากจากสมการไม่เชิงเส้นที่ซับซ้อน โดยมีลักษณะดังนี้

    1. โครงสร้างแฟรกทัล: รูปแบบซับซ้อนที่ซ้ำกันในหลายสเกล
    2. ความไวต่อเงื่อนไขตั้งต้น: การเปลี่ยนแปลงเพียงเล็กน้อยนำไปสู่ผลลัพธ์ที่แตกต่างโดยสิ้นเชิง
    3. วิถีไม่เป็นคาบ: ไม่วนซ้ำเส้นทางเดิม
    4. ระเบียบในความโกลาหล: แม้ดูเหมือนสุ่ม แต่ภายในมีโครงสร้างบางอย่างที่คงอยู่

ผลกระทบผีเสื้อและการสร้างภาพ Thomas Attractor

  • ผลกระทบผีเสื้อ คือปรากฏการณ์ที่การเปลี่ยนแปลงเพียงเล็กน้อยก่อให้เกิดความแตกต่างอย่างมากในระยะยาว มักอธิบายด้วยอุปมาว่า “การกระพือปีกของผีเสื้อในจีนอาจทำให้เกิดเฮอริเคนในทะเลแคริบเบียน”
  • เมื่อเปลี่ยนค่าพารามิเตอร์ a ของ Thomas Attractor เป็น 0.10, 0.13, 0.19, 0.21 เป็นต้น วิถีของอนุภาคและรูปร่างโดยรวมจะเปลี่ยนไปอย่างสิ้นเชิง
  • หากเปลี่ยนสถานะเริ่มต้นเป็น cube และ sphere surface อนุภาคจะเคลื่อนที่ตามเส้นทางที่ต่างกัน แต่สุดท้ายจะลู่เข้าสู่สถานะตัวดึงดูดเดียวกัน

รายละเอียดการพัฒนา

  • การสร้างภาพใช้ Three.js เพื่อคำนวณและเรนเดอร์อนุภาคจำนวนมากบน GPU โดยตรง
  • ใช้เทคนิค ping-pong rendering เพื่อลดการส่งข้อมูลระหว่าง CPU และ GPU ให้น้อยที่สุด โดยสลับใช้ frame buffer object (FBO) สองชุด
    • บัฟเฟอร์ ping และ pong จะเก็บสถานะปัจจุบันและสถานะถัดไปตามลำดับ
    • โปรแกรมเชดเดอร์จะอัปเดตตำแหน่งของอนุภาคแต่ละตัวตามสมการของตัวดึงดูด
    • ในทุกเฟรมจะสลับบัฟเฟอร์และเรนเดอร์สถานะใหม่ของอนุภาค

เอกสารอ้างอิงและข้อมูลเพิ่มเติม

  • มีการอ้างอิงแหล่งข้อมูลที่เกี่ยวข้อง เช่น Maxim's Attractor visualization, Wikipedia: Attractor, List of Chaotic Maps, WebGLFundamentals: Ping Pong Rendering
  • ยังยกตัวอย่างเพิ่มเติมของการสร้างภาพตัวดึงดูดแบบ 3D จาก chaoticatmospheres.com, dynamicmath.xyz, Reddit r/generative
  • ขณะนี้กำลังรับฟังความคิดเห็นผ่านหน้า GitHub Discussion ของบล็อก และมีแผนจะรวมเข้ากับบล็อกในอนาคต

1 ความคิดเห็น

 
GN⁺ 2025-11-01
ความคิดเห็นบน Hacker News
  • ภาพการแสดงผลปริภูมิเฟส 3D แบบนี้แสดงให้เห็นได้ดีว่าเราดึงข้อมูลออกมาได้มากแค่ไหน
    แต่ในขณะเดียวกันก็ทำให้รู้สึกด้วยว่าเรากำลังพลาด ความอุดมสมบูรณ์ ไปมากเพียงใดในโลกที่มีมากกว่า 3 มิติ
    เลยสงสัยว่าจะมีวิธีทำภาพของ 4D ขึ้นไปได้ไหม เช่น ดูภาพตัดขวางแบบ 3D หรือไล่ตามอนุภาคแบบลากรังเจียนแล้วใช้สีแสดงการเปลี่ยนแปลงของค่า D
    ภาพลักษณะนี้ทำให้นึกถึงช่วงแรก ๆ ของกลศาสตร์สถิติ ตอนที่ Boltzmann และ Gibbs ถกเถียงกันเรื่องปริภูมิเฟสและแนวคิดเรื่องสมดุล

    • หลังจากดูงานอย่าง Flatland หรือ 4D Toys ข้อสรุปที่ได้คือ วงจรประสาท ของมนุษย์ไม่ได้ถูกออกแบบมาให้เข้าใจสิ่งที่มากกว่า 3 มิติได้อย่างเป็นสัญชาตญาณ
      เราอาจเข้าถึงมันได้ผ่านการอนุมานหรือความเข้าใจเพียงบางส่วน แต่ไม่อาจ grasp มันได้ทั้งหมด
      จริง ๆ แล้วผมคิดว่าความสามารถในการคิดแบบ 3D เองก็เป็น ความสามารถเชิงการปรับตัว ที่ยิ่งใหญ่มากของมนุษย์เมื่อเทียบกับสัตว์อื่น
  • เจ๋งมาก! ถ้ามีฟังก์ชันให้ปรับค่า a กับ b เพื่อค้นหารูปแบบ ตัวดึงดูดประหลาด (strange attractor) ของตัวเองก็คงดีมาก
    ถ้ามีโหมดอิสระด้วยก็น่าจะสนุก

    • ผมเป็นผู้เขียนเอง ฟีเจอร์นั้นมีอยู่แล้ว
      บนมือถืออยู่ที่แถบเมนูด้านล่าง และบนเดสก์ท็อปจะมองเห็นได้ทันที
  • ตอนเป็นวัยรุ่น เมื่อราว 25 ปีก่อน ผมเคยทำ ตัวแสดงภาพตัวดึงดูดแบบโกลาหล 2D ขึ้นมาเอง
    แล้วก็เกิดความคิดขึ้นมาว่า “ถ้าแทนที่จะทำเป็นภาพ ลอง เรนเดอร์เป็นเสียง จะเป็นยังไง?”
    ผมลองจับคู่ความถี่กับมุม และแอมพลิจูดกับขนาด พร้อมกับได้เรียนรู้เรื่อง เอนเดียน (endianness) เป็นครั้งแรกจากการจัดการฟอร์แมต WAV ด้วยตัวเอง
    ผลลัพธ์ไม่ได้ถึงกับฟังไม่ได้เลย และให้อารมณ์เหมือนเอฟเฟกต์เสียงคอมพิวเตอร์ในหนังไซไฟเก่า ๆ

    • มี โมดูล Eurorack ที่เข้าหาแนวนี้เหมือนกัน
      ตัวอย่างเช่น Hypster by Nonlinear Circuits และ Orbit 3 by Joranalogue ซึ่งเพิ่มการเคลื่อนไหวที่คาดเดาไม่ได้แต่ก็เป็นคาบให้กับเสียงได้อย่างสนุกมาก
  • ตอนมัธยม ผมเคยเล่นกับตัวดึงดูดพวกนี้ตั้งแต่สมัย ยุคจูราสสิก แทบจะได้
    ตอนนั้นคอม 486 ใช้เวลาวาดหนึ่งภาพ 20–30 นาที แต่ตอนนี้กลับทำ การเรนเดอร์ 3D แบบเรียลไทม์ ได้แล้ว น่าทึ่งมาก
    ประสบการณ์แบบนี้มีอิทธิพลอย่างมากต่อ การคิดเชิงระบบ ของผมเกี่ยวกับวงโคจร ความไม่เสถียร และเรื่องทำนองนั้น

  • ภาพนี้ทำให้นึกถึง Phong
    https://phong.com/

  • บังเอิญว่าสัปดาห์นี้ผมเพิ่งขุด โปรเจกต์สร้างแฟร็กทัล ที่ทำไว้ตอนอยู่ชั้น ม.5 ในปี 2002 ขึ้นมา แล้วปรับให้ทันสมัยด้วยไลบรารีกราฟิก SFML
    https://github.com/gradientwolf/fractals_SFML
    เห็นโพสต์นี้แล้วยินดีมาก เพราะโปรเจกต์เล็ก ๆ แบบนี้พาผมย้อนกลับไปสู่ช่วงวัยรุ่นที่เต็มไปด้วย ความอยากรู้อยากเห็นอันเรียบง่ายและบริสุทธิ์

  • สำหรับคำพูดที่ว่า “ไม่แน่ใจว่านี่เป็นการขยายทางคณิตศาสตร์ที่ถูกต้องหรือเปล่า” จริง ๆ แล้วการขยายไปสู่มิติที่สูงกว่านั้นไม่ได้มี คำตอบเดียว
    มันอาจเป็นไปได้หลายแบบ หรืออาจไม่มีเลยก็ได้
    ถึงอย่างนั้น ตัวความพยายามที่จะทำให้ “ใกล้เคียงพอ” ก็ยังน่าสนใจอยู่ดี
    อย่างเช่นถ้าไปดูความพยายามของคนที่อยากสร้าง Mandelbrot แบบ 3D ก็จะพบว่าแม้ไม่มีคำตอบที่สมบูรณ์แบบ แต่ก็มี ความเป็นไปได้ที่น่าสนใจมาก อยู่ไม่น้อย

  • สวยงามจริง ๆ เหมือนกำลังดู ฝูงนกกิ้งโครงเต้นระบำเป็นหมู่
    https://www.youtube.com/watch?v=V4f_1_r80RY

  • วิธีอธิบายทฤษฎีคณิตศาสตร์นั้น ตรงไปตรงมาและสดใหม่ มาก
    ถ้าเขียนเรื่องหัวข้ออื่นด้วยก็น่าจะน่าสนใจมากจริง ๆ

  • ภาพนี้ทำให้นึกถึง โมดูล “strange” ของ xscreensaver