ภาษาแอล ภาษาต้นไม้


สวัสดีครับทุกท่าน

         วันนี้หากินเรื่องใกล้ตัวนะครับ เลยนำเสนอภาษาแอล หรือเรียกว่า L-systems ระบบแอลนั่นเองครับ เป็นภาษาที่นักชีววิทยาชาวอังการี่ จากมหาวิทยาลัย Utrecht จากประเทศเนเธอร์แลนด์ ที่ชื่อ Aristid Lindenmayer (1925-1989) เมื่อ ค.ศ. 1968 ได้ออกแบบไว้ เพื่ออธิบายโครงสร้างและการเจริญเติบโตของต้นไม้ครับ เป็นภาษาที่ใ้ช้ตัวอักษรในการอธิบายโครงสร้างของต้นไม้ ด้วยสัญลักษณ์ต่างๆ นะครับ

         ผมได้ปรับปรุงแนวทางของระบบแอลเพื่อให้สอดคล้องกับงานวิจัยที่ผมทำ เพื่อให้ปรับใช้กับแนวทางของเราเอง

ดูภาพตัวอย่างเล่นๆ ดังต่อไปนี้ก่อนนะครับ

Lsystem 

จากภาพด้านบน จะเห็นว่าผมใช้ สัญลักษณ์ง่ายๆ ดังต่อไปนี้นะครับ

 I   =  Internode  แทนท่อนของกิ่งก้าน
 L =   Leaf  แทนใบของต้นไม้
 F =   Flower แทนดอกของต้นไม้
 [   ] = Branch แทนการแตกกิ่งใหม่ของต้นไม้
  -, +   = Rotation  แทนการหมุนของกิ่ง โดย - แทนการหมุนไปทางตามเข็มนาฬิกา และ + แทนการหมุนในทิศทางทวนเข็มนาฬิกา เป็นมุมที่กำหนด จากภาพด้านบนใช้ มุมเป็น 45 องศา

จากภาพตัวอย่างด้านบน จะมีชุดตัวอักษรอธิบายลักษณะลำต้นเหนือพื้นดิน Shoot  และ รากส่วนใต้ดิน Root เป็นชุดตัวอักษรตามที่เีขียนไว้ในภาพนะครับ

มาดูตัวอย่างอื่นๆ ต่อไปกันดีกว่าครับ

 
คลิกที่ภาพจะเห็นภาพเคลื่อนไหวการเจริญเติบโต เป็นกรณีศึกษาตัวอย่างนะครับ


 ต้นไม้ด้านบนนี้ แทนด้วยภาษาแอลที่ออกแบบไว้ด้านล่างนี้นะครับ เมื่อเราใส่ L-systems code นี้เข้าไปในโปรแกรม PlantVR ที่เขียนไว้จากงานวิจัย แล้วกำหนดค่าต่างๆ เกี่ยวกับต้นไม้ ต้นไม้ก็เจริญเติบโตตามที่กำหนดไว้ในรูปแบบการเจริญเติบโต ตามข้อมูลที่มีและกำหนดไว้ในโปรแกรม

[Lsystem]
Plant{
Shoot{
Iterations=3
Angle=45
Diameter=0.7
Axiom=A
A=(0.33)A[+A]A[-A]A,(0.33)A[+A]A,(0.34)A[-A]A
Endrule
A=IL
}
Root{
Iterations=0
Angle=45
Diameter=0.5
Axiom=i
A=(0.5)I[+A][/A][\A]A,(0.25)I[+A][/A]A,(0.25)I[+A][\A]A
B=(0.5)I[-B][/B][\B]B,(0.25)I[-B][\B]B,(0.25)I[-B][/B]B
C=(0.5)I[-C][+C][\C]C,(0.25)I[-C][\C]C,(0.25)I[+C][\C]C
D=(0.5)I[-D][+D][/D]D,(0.25)I[+D][/D]D,(0.25)I[-D][/D]D
E=I[-A][+B][/C][\D]E
Endrule
A=I
B=I
C=I
D=I
E=I
}
}
[EndLsystem]

 ตัวอักษรเหล่านั้น ก็จะแทนการแทนที่และวนทำซ้ำเพื่อเป็นไปตามการกำหนดไว้ในโปรแกรม โดยจะมีการแปลค่าอักษรที่ได้ให้เป็นต้นไม้นะครับ ไว้ผมจะเขียนเล่าไว้ใ้ห้อ่านกันอีกนะครับ

หากเรามีการต่อยอดงานไปถึงการทำวิจัยพวกพืชไร่ และอื่นๆ ต่อไป มีการใส่รายละเอียดเกี่ยวกับสิ่งแวดล้อมเข้าไป ให้ต้นไม้โตตามปัจจัยต่างๆ ก็อาจจะเป็นประโยชน์ต่อเกษตรกรต่อๆ ไปครับ

อ่านเพิ่มเติมได้ที่ www.somporn.net

ขอบพระคุณมากครับผม

เม้ง 

หมายเลขบันทึก: 118796เขียนเมื่อ 11 สิงหาคม 2007 05:58 น. ()แก้ไขเมื่อ 6 กันยายน 2013 18:14 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (10)

สวัสดีครับน้องเม้ง

             อ่านแล้วรู้สึกว่าดีกับชาวนา เกษตรกร ป่าไม้ สิ่งแวดล้อม พระแม่โพสพ พระแม่คงคา พระแม่ธรณี ฯลฯ อยากให้งานวิจัยสำเร็จเสร็จสิ้นลงโดยเร็ว

P
ครูนงเมืองคอน

 

สวัสดีครับคุณครู

  •  สบายดีไหมครับ ขอบคุณมากเลยนะครับ ที่เอาเป้าหมายดีๆ มาบอกกล่าวเพื่อเชื่อมโยงไปสู่สิ่งเหล่านั้นนะครับ
  • ช่วยๆ กันทำในหลายๆ ระดับแบบศรัทธานำ ผมเชื่อว่าสังคมเราจะไปถึงจุดเหล่านั้นได้ครับ แม้ว่าจะเจอปัญหา ก็เปลี่ยนปัญหาให้เป็นปัญญา เอาปัญญาไปแก้ปัญหาถัดไป ก็จะเกิดดอกปัญญาขึ้นไปเรื่อยๆ ครับ วันหนึ่งคงบานทั่วดินเมืองไทยครับครับ
  • ขอบคุณมากครับ และทำงานให้สนุกในวันหยุดนะครับ

เม้งครับ

เป็นวิทยาการที่น่าสนใจมากครับ หากนำมาใช้ประโยชน์กับสถานการณ์จริงจะพัฒนาก้าวขึ้นไปอีกนะครับ

อ่านแล้วรู้สึกงงงงครับว่า เราทำไปเพื่ออะไรเหรอครับ
P
บางทราย (คนเข็นครก ขึ้นภูเขา)

 

สวัสดีครับพี่บางทราย

  •  ขอบคุณมากครับพี่ ที่ทำอยู่ตอนนี้ในส่วนของการอธิบายต้นไม้ ได้เพียงในระดับการอธิบายและสร้างการอธิบายให้ได้โดยการใส่ภาพเข้าไปแล้วให้ระบบสร้างโครงสร้างขึ้นมาให้ด้วยพร้อมภาษาต้นไม้นั้นด้วยนะครับ เพราะดูโคดต้นไม้แล้วอาจจะไม่คุ้นในระดับภาษาที่เราจะเข้าใจได้ง่าย
  • แ้ล้วตัวอักษรแต่ละตัวจะมีสมการการเจริญเติบโตควบคุมอยู่ด้วยนะครับ
  • การนำไปใช้นั้นจำเป็นต้องมีข้อมูลของพืชแต่ละชนิดๆ ไปนะครับ
  • เพราะว่าแนวทางโมเดลทางต้นไม้นี้จะเชื่อมได้ก็ต่อเมื่อข้อมูลจากการทดลองถูกเก็บแล้วนำมาวิเคราะห์เพื่อผสมใ้ห้เข้ากับระบบนะครับ
  • ขอบคุณมากครับ
P
ธนพันธ์ ชูบุญ

 

สวัสดีครับคุณหมอ

  •  ขอบคุณมากๆ เลยครับ คำถามยอดฮิตครับ อิๆๆ
  • หากให้มองประโยชน์ในเรื่องพวกนี้ จะหลากหลายมากครับ ในเรื่องของการจำลองการแทนต้นไม้ด้วย โคดภาษาพวกนี้ หากเราเก็บเป็นแฟ้มขนาดแฟ้มจะแตกต่างๆกันครับ โดยมองว่าเครื่องคอมพ์เราจะทำงานรวดเร็ว แล้วส่งแต่โคดพวกนี้ไปแล้วให้แต่ละเครื่องคำนวณแล้วสร้างภาพเหล่านั้นขึ้นมาให้อัตโนมัติ
  • ภาษาแอลเป็นเพียงหลักการในการออกแบบกฏต่างๆ จากตัวอย่าง แต่ละบรรทัดก็คือกฏในการแทนที่ของต้นไม้ เชน ยอดจะถูกแทนที่ด้วยอะไรในลำดับต่อไป ใบจะถูกแทนที่ด้วยตาข้าง แล้วก็กิ่งใหม่ ดอกจะถูกแทนที่ด้วยผล แล้วก็วนทำซ้ำไปเรื่อยๆ
  • ภาษานี้สามารถปรับใช้กับการออกแบบโครงสร้างตึก แทนลำดับการแทนที่ของตัวโน้ตทางดนตรีก็ได้ครับ หรือจะเอาไปควบคุมแสงไฟ เช่นในดิสโ์ก้เทค จะมีอุปกรณ์ไฟต่างๆ เราก็ใช้ลำดับโค้ดพวกนี้ไปแทนที่ก็ได้ครับ หรือควบคุมการให้น้ำพืชในไร่ด้วยระบบสปริงเกอร์ ควบคุมลำดับการทำงานต่างๆ ในสายการผลิตของโรงงานก็ได้ครับ อยู่ที่การประยุกต์ใช้นะครับ
  • ส่วนที่ผมทำเน้นการประยุกต์ใช้กับต้นไม้ เป็นแนวทางหนึ่งนะครับ ในการอธิบายการเปลี่ยนแปลงและเจริญเติบโตของต้นไม้ จากภาพด้านบนรูปล่าง ลองคลิกเข้าไปดูนะครับ จะเห็นการเจริญเติบโตคร่าวๆ นะครับ ซึ่งจะสามารถเอาไปประยุกต์ใช้กับทางการเกษตร
  • ที่ผมทำอยู่ส่วนใหญ่ก็ใช้พวกต้นถั่วเหลือง คือต้องเข้าใจต้นไม้ก่อนนะครับ ว่าหากเราจะน้ำต้นไม้มาจำลอง เราจำเป็นต้องรู้อะไรบ้าง ในส่วนการอธิบายการเปลี่ยนแปลงนี้ เป็นเพียงขั้นเริ่มต้น ไปประกอบกับการรวมกับข้อมูลจากพืชหรือต้นไม้จริง แล้วเมื่อมีข้อมูล ดินน้ำสภาพแวดล้อม รวมเป็นโมเดล ประกอบกับต้นไม้ เราอาจจะจำลองแล้วอาจจะได้ปัจจัยว่าต้นไม้นี้จะโตอย่างไรแทนการปลูกจริง
  • เป้าหมายของวิจัยนี้ ที่วางไว้คือ จะใช้เป็นแนวทางการให้คำตอบของเกษตรกร ว่าหากเค้ามีพื้นที่แบบนี้ มีดินแบบนี้ น้ำแบบนี้ ควรจะปลูกพืชอะไรดี แล้วหากเลือกพืชชนิดนี้ปลูกแล้ว มันจะโตอย่างไร เป็นการจำลองให้เห็นก่อนการทำจริง แต่นั้นก็ต้องมีการทำการทดลอง ก็คล้ายๆ กับในทางการแพทย์นะครับ
  • จริงๆ แล้วผมมีการนำแนวทางนี้ไปใช้เกี่ยวกับการอธิบายโครงสร้างของเซลล์ประสาทแบบกิ่งก้านโครงสร้างต้นไม้เช่นกันครับ หรือระบบไหลเวียนของเลือดนะครับ โดยจำลองให้เห็นว่าในกิ่งก้านเหล่านั้น มีอะไรไหลอย่างไรบ้างครับ
  • หากอาจารย์จะศึกษาในระดับโมเดลลิ่ง ของ Aneurism ที่เกิดกับเส้นเลือดไม่ว่าจะในสมอง หรือตรงไหน มความจำเป็นจะต้องศึกษาโครงสร้างก่อนใชไหมครับ ดังนั้นแนวคิดของภาษานี้คือ การศึกษาโครงสร้าง และกระบวนการเปลี่ยนแปลงภายในครับ
  • ทางพืชจะเป็น Functional-Structural Plant Modeling (FSPM)
  • ขอบคุณมากครับ มีคำถามอื่นด้วยความยินดีนะครับ

น่าสนใจมากเลยครับคุณเม้ง

ผมว่าจะถามเหมือนคุณธนพันธ์ ก็ถูกชิงถามไปซะก่อน เกิดความกระจ่างเลยกลับไปดูที่ภาพแรกน่ะครับ ที่คุณเม้งบอกว่าการ Rotation นั้นหมายถึงการหมุนของกิ่ง ในที่นี้ มันเป็นสามมิติหรือเปล่าครับ ผมงงว่ามุม 45 นี้ดูแนวไหนเหรอครับ

ขอขอบคุณล่วงหน้าเลยครับ 

P
คุณแว้บ

 

สวัสดีครับคุณแว้บ

  •  เปลี่ยนรูปใหม่ จากที่เคยเทห์ตะแคงคอ เป็นเท่ห์กว่าแบบหน้าตรง เลยนะครับผม
  • ขอบคุณมากๆ เลยครับผม สำหรับความสนใจและคำถามนะครับ
  • สำหรับมุมนั้น เทียบมุมกับแกนแนวตั้งนะครับ ดังนั้น ใน ค่ามุมในสองมิตินั้น จะทำมุมเทียบกับแนวแกนตั้งนั่นเอง โดยนิยามว่า
  • เครื่องหมาย บวก ให้ทำมุมกับแนวตั้งหมุนไปในทางซ้ายมือเป็นมุม 45 องศา
  • เครื่องหมาย ลบ ให้ทำมุมกับแนวตั้งหมุนไปในทางขวามือ(ตามเข็ม) เป็นมุม 45 องศา
  • นั่นคือสำหรับต้น (ส่วนบนดินนะครับ)
  • ส่วนด้านของรากก็ทำนองเดียวกันครับ เพียงแต่แทนที่จะแนวตั้งขึ้น ก็เป็นแนวตั้งลงครับ
  • ส่วนสำหรับในสามมิตินั้น จำเป็นต้องนิยามเครื่องหมายเพิ่ม เช่น ให้หมุน รอบแกน X,Y, Z โดยจะมีการอ้างอิงจากเว็กเตอร์หนึ่งหน่วยในแต่ละแกนครับ นั่นคือ จะมีเครื่องหมาย ในสามมิติ ที่นิยมใช้คือ ทั้งหมด 6 เครื่องหมายในการหมด เช่น
  • +, -, /, \, ^, & ตามแกนต่างๆ นะครับ
  • ซึ่งจริงๆ แล้ว สัญลักษณ์ เหล่านี้ เราจะกำหนดอะไรก็ได้ เพียงแต่ให้นิยามให้ตรงกันกับตัวแปลผลเครื่องหมายนะครับ ว่าเจอเครื่องหมายต่างๆ นี้ควรจะหมุนไปทางใด เป็นมุมเท่าไหร่ แล้วจึงจะวาดกิ่งและใบ ดอก ผล ตามที่ต้องการนะครับ
  • ตามอ่านเพิ่มเติมได้ที่

    Algorithmic Botany: Publications

    http://algorithmicbotany.org/papers/ 
  • จริงๆ แล้วการนำไปประยุกต์ใช้ ยังมีอีกมากๆ เลยครับ สำหรับเมืองไทยคนใช้ยังมีน้อยครับ
  • ผมเริ่มทำและจับระบบแอลมาเมื่อ 1999  มาตอนนี้ก็นานแล้วเหมือนกันนะครับ เพียงแต่เรายังจำเป็นต้องมองระบบเพื่อนำไปประยุกต์ใช้จริงกับการประยุกต์ในบ้านเรานะครับ
  • ขอบคุณมากๆ เลยครับ มีคำถามฝากไว้ได้นะครับ  ด้วยความยินดีนะครับ

กระจ่างเลยครับคุณเม้งขอบคุณมากครับ ขอบคุณสำหรับลิ้งค์ด้วยครับ น่าสนใจมากๆ เลย 

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท