[C++] เกี่ยวกับการสร้างรูปวงกลม...ช่วยผมหน่อยครับ T_T

กระทู้จากหมวด 'ETC' โดย Kuna, 3 ธันวาคม 2007.

  1. Kuna

    Kuna Editor

    EXP:
    369
    ถูกใจที่ได้รับ:
    1
    คะแนน Trophy:
    38
    อาจารย์สั่งการบ้านมาให้สร้างรูปวงกลมอ่ะครับ...เพียงแต่ว่าวงกลมธรรมดาอ่ะทำได้แล้ว...แต่ผมต้องทำวงกลมที่เป็นรูปก้นหอยแบบนี้อ่ะครับ

    [​IMG]

    นั่งลองผิดลองถูกเป็นชั่วโมงยังไงก็ไม่ได้อ่ะครับ...ปวดหัวจะแย่แล้ว T-T

    ทำได้แต่รูปนี้อ่ะ

    [​IMG]

    ใช้ CODE ตามข้างล่างนี้อ่ะครับ

    ใครรู้วิธีทำช่วยบอกหน่อยนะครับ...T-T

    ป.ล. ผมใช้ Visual Studio 2005 นะ
  2. shuu

    shuu Banned

    EXP:
    1,993
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    0
    [deleted]
  3. gomora

    gomora Board Protector

    EXP:
    726
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    0
    เขียนไม่เป็นเหมือนกัน

    แต่ ให้ลอง search คำว่า spiral equation ใน google แล้วลอง implement สมการที่ใช้สร้าง วงกลมก้นหอย ดูนะครับ
    มีหลายสมการเลย
    ตัวอย่าง
    <!-- m -->http://www.mathematische-basteleien.de/ ... 0equations<!-- m -->
    <!-- m -->http://www.2dcurves.com/spiral/spirallo.html<!-- m -->

    ส่วนวิชามาร ก็ลอง search แบบที่เป็น lib code เลยก็ได้ครับ
    ไม่ก็ ลองเพิ่มคำว่า MATLAB ต่อท้ายไป น่าจะเจอ code แบบที่แตกออกเป็น Agorithm แล้วครับ

    ไม่แนะนำให้ search ด้วย keyword c++ โดยตรง ยกเว้นกรณีจำเป็น :p

    โชคดีนะ :D
  4. ffpokemon

    ffpokemon Editor

    EXP:
    1,691
    ถูกใจที่ได้รับ:
    79
    คะแนน Trophy:
    113
    ตอนแรกนึกว่าจะต้องอธิบายเรื่องสมการวงกลมซะอีก
    ที่ไหนได้ เข้ามาอ่านดู คุณ Kuna ก็เข้าใจอยู่แล้วนี่นา

    ก่อนอื่นเรามาดู code ของรูปล่างกันก่อน

    for(r=20;r<=160;r=r+20)
    {for(float i = 0 ;i<2*((22.0)/7);i=i+0.01)
    {
    x = xc + r * cos(i);
    y = yc + r * sin(i);
    drawDot(x,y);
    }
    }

    จะเห็นว่ามี loop อยู่ 2 ชั้น คือค่อยๆ เพิ่ม i จนครบวงก่อน จากนั้นค่อยเพิ่ม r
    จึงทำให้เกิดวงกลมที่เป็นชั้นๆ ไม่ต่อเนื่อง เพราะต้องเพิ่ม i จนครบ ค่อยเพิ่ม r

    ถ้าอยากจะได้ลายก้นหอย เราจะต้อง เพิ่ม i และ r ไปพร้อมกัน
    code ใหม่ก็จะเป็นแบบนี้

    float i;
    for(i = 0,r=20;r<=320;i=i+0.04,r=r+1)
    {
    x = xc + r * cos(i);
    y = yc + r * sin(i);
    drawDot(x,y);
    }


    >>สำหรับ for นั้น โครงสร้างคำสั่งจะเป็น for(<initialize>;<condition>;<increment>) โดยเราสามารถมี initialize กับ step หลายคำสั่งได้
    >>ด้วยการใช้สัญลักษณ์ , เช่น for(<initialize1>,<initialize2>;<condition>;<increment1>,<increment2>) แต่ถ้า
    >>compiler มันเรื่องมาก ลองใช้ while แทนละกันครับ


    ถ้าได้ลายก้นหอยไม่สวย อาจต้องปรับตรง increment ของ i กับ r ดูครับ
    ลองดูนะครับ
  5. gomora

    gomora Board Protector

    EXP:
    726
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    0
    (/ - - )/ (_ - - )_ คารวะ reply บนครับ m(_ _ )m

    นับถือๆ
  6. Dissidia

    Dissidia New Member

    EXP:
    239
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    0
    อดถามไม่ได้ มันคือโปรแกรมอะไรค่ะ :???: อยากรู้ว่ามันคืออนิเมชั่นใช่ไหมค่ะ ^^;
  7. spao99

    spao99 Detonator

    EXP:
    810
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    36
    สู้เข้าครับ
    ท่าทางจะเรียน computer graphic 1 อยู่ :E

    ปล. ผมเรียนสาย Software Engineering เลยไม่ได้เรียน CG1 ตอบไม่ได้เหมือนกัน ^^!
  8. Kuna

    Kuna Editor

    EXP:
    369
    ถูกใจที่ได้รับ:
    1
    คะแนน Trophy:
    38
    โอ้ว...ขอบคุณมากเลยครับ...ทำได้แล้ว TwT

    ตอนแรกผมก็นึกออกแหละครับว่าต้องเพิ่ม i กับ r ไปพร้อมๆ กัน

    แต่มันนึกไม่ออกว่าต้องแก้ CODE ยังไงน่ะครับ แหะๆๆ
  9. lovetoto

    lovetoto Well-Known Member

    EXP:
    755
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    86
    บอกตามตรงเห็นรูปแรกแล้วนึกถึง -ก้นหอยมรณะ- (เป็นการ์ตูนแนวHorrorที่ชวนอ้วกที่สุด) นอกนั้นผมไม่รู้
    ครับ - -

    /me มาเพื่อบอกแล้วจากไป
  10. flamefox

    flamefox Well-Known Member

    EXP:
    2,755
    ถูกใจที่ได้รับ:
    4
    คะแนน Trophy:
    88
    อา กระทู้ดีมีสาระ....

    Dark of Dissidia มันไม่ใช่โปรแกรมอนิเมชั่นนะคร้าบ มันคือภาษาเขียนโปรแกรมที่ถือได้ว่าที่เป็นต้นแบบของภาษาเขียนโปรแกรมสมัยใหม่หลาย ๆ ภาษาคือ C++ โดย C++ มีรากฐานมาจากภาษา C ซึ่งเป็น Modular แล้วนำมาพัฒนาต่อให้กลายเป็น OOP : )
  11. akamatsu

    akamatsu New Member

    EXP:
    862
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    0
    "มาเป็นก้นหอยกับชั้นสิ"

    [action]เกี่ยวกันไหมเนี่ย[/action]
  12. Phoenixkung

    Phoenixkung New Member

    EXP:
    89
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    0
    ทำให้ผมนึกถึงคนรู้จักที่ pocket เลยแฮะ
    สโลแกนนี้ :E
  13. madsmn

    madsmn Anglophiles man

    EXP:
    403
    ถูกใจที่ได้รับ:
    4
    คะแนน Trophy:
    38
    เคยเรียนมาตอนปีหนึ่งเหมือนกัน

    แต่เจอแค่ทำตัว + ให้เรียงเป็นข้าวหลามตัดก็ตายแล้วครับ โง่เรื่องเทคโนโลยีมาก = =''
  14. nutdiablo

    nutdiablo New Member

    EXP:
    20
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    1
    โฮๆ ....... สุดยอดจริงๆ ผมยังไม่เคยทำแบบนี้เลย ทำแต่ดาว
    แค่ทำให้ดาวออกมาเป็น Pentagram ก็คำนวนไม่ถูกแล้ว อิอิถ้าใครช่วยผมได้อีกคนก็ดีครับ
    ตอนนี้ออกเป็นดาวน่าเกลียดมาก
  15. revalver

    revalver Member

    EXP:
    42
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    6
    ง่า .... โรงเรียนผมไม่มีวิชาคอมพิวเตอร์กราฟฟิค แล้วอย่างนี้ จะเขียนเกมเป็นมั้ยเนี่ย
  16. spao99

    spao99 Detonator

    EXP:
    810
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    36
    งานนี้ยากกว่า การปริ้น char ออกไปเป็นรูปทรงที่ไม่ซับซ้อนครับ ( อันนั้นผมก็ทำตอน ปี1 , ทำสี่เหลี่ยมจัตุรัส ตรงกลางโบ๋ , แจกโจทย์สอบให้เขียนสดภายใน 2 ชั่วโมง(ผมใช้ 1 ชั่วโมง) )

    นี่เห็นโค้ดใช้ openGL แล้วเขียนทีล่ะจุด pixel แบบนี้ , เป็นวิชา CG ชัวร์ ^^!

    เพื่อนผมเรียนจบเทอม 1 ไปแล้ว, ในวิชา CG1 สุดท้ายก็ต้องทำภาพ 3D ง่ายๆได้แล้วล่ะ หมุนพลิกแกนโชว์ไปมา หุๆๆ( วิชา CG นี่ใช้วิชา Linear Algebra ใครอยากไปทาง CG ตั้งใจเรียน Linear น่ะครับ :E )

    ปล. ที่ ม. ของผมเรียน CG กันตอน ปี 3 เทอม 1 ครับ( เฉพาะคนเรียนสาย Computer science )
  17. Kuna

    Kuna Editor

    EXP:
    369
    ถูกใจที่ได้รับ:
    1
    คะแนน Trophy:
    38
    ใช่แล้วเดโทอันนี้วิชา CG อ่ะแหละ

    ตอนนี้ผมปี 2 เทอม 2 น่ะ สาย ComAnimation

    ^^!
  18. Dissidia

    Dissidia New Member

    EXP:
    239
    ถูกใจที่ได้รับ:
    0
    คะแนน Trophy:
    0
    ขอบคุณมากค่ะ :china:

Share This Page