ทรงกลมที่คาดการณ์ไว้ในพื้นที่ 2D ส่งผลให้วงรีเสมอหรือไม่


22

สัญชาตญาณของฉันคือเสมอว่าเมื่อทรงกลมใด ๆ ถูกฉายลงในช่องว่าง 2D ซึ่งผลลัพธ์จะเป็นวงรีทางคณิตศาสตร์เสมอ (หรือวงกลมในกรณีที่เลวร้าย)

ในอดีตเมื่อฉันกำลังทำการเขียนโปรแกรมกราฟิกของตัวเองและนำสิ่งนี้มากับคนอื่น ๆ พวกเขายืนกรานว่าฉันผิด ถ้าฉันจำได้อย่างถูกต้องพวกเขาเชื่อว่าผลที่ได้อาจเป็น "รูปไข่" อย่างคลุมเครือ

ใครถูกต้อง?


เนื่องจากมีหนึ่งคำตอบที่ส่งไปแล้วฉันไม่ต้องการเปลี่ยนคำถามทั้งหมด แต่ฉันรู้ว่าฉันทิ้งรายละเอียดที่สำคัญเนื่องจากการสูญเสียความคุ้นเคยกับฟิลด์ในช่วงหลายปีที่ผ่านมา

ผมตั้งใจที่จะถามเฉพาะเกี่ยวกับการฉายมุมมองที่ฉายเป็นโปรแกรมเชิงเส้น

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


3
สมมติว่าการฉายมุมมอง AFAICS ของเขตแดน 'ที่เกิดขึ้นจากมุมมองที่จุดขอบฟ้าจะเป็น (ตัดทอน) กรวยและทำให้มากที่สุดของการฉายจะเป็นภาคตัดกรวย: en.wikipedia.org/wiki/Conic_section วงรีจึงมีความเป็นไปได้ แต่ไม่ใช่เพียงจุดเดียว
Simon F

1
ในกรณีที่ผมจะส่งเสริมความคิดเห็นของฉันไปที่คำตอบ ...
ไซมอน F

1
คุณต้องเพิ่มข้อ จำกัด ฟิชอายยังเป็นมุมมองของการฉายภาพและคุณจะไม่ได้รับจุดไข่ปลา ข้อ จำกัด ที่คุณต้องการคือความเป็นเส้นตรง
v.oddou

1
ฉันอยากจะพูดบางอย่างเช่น "ซึ่งการฉายเป็นแอพพลิเคชั่นเชิงเส้น" อาจมีบางคำลัดสำหรับสิ่งนี้เช่น "linear epimorphism" หรือบางอย่าง แต่ฉันลืมไปนานแล้ว
v.oddou

1
นี่ควรจะอยู่ที่ไหนสักแห่งในหัวข้อนี้ดังนั้นเพิ่มที่นี่ :) การวิเคราะห์ทรงกลมของ Inigo Quilez: shadertoy.com/view/XdBGzd
Mikkel Gjoel

คำตอบ:


18

สมมติว่าการฉายภาพมุมมองและจุดชมวิวภายนอกไปยังทรงกลมจากนั้น 'ขอบเขต' ที่เกิดขึ้นจากจุดชมวิวและวงกลมบนทรงกลมซึ่งเป็นขอบฟ้า WRT จุดชมวิวจะเป็นรูปกรวย

การฉายภาพเปอร์สเปคทีฟ (บนระนาบ) นั้นเทียบเท่ากับการตัดกรวยนี้กับระนาบซึ่งสร้างส่วนที่เป็นรูปกรวย FYI สี่กรณีที่ไม่เสื่อมโทรมจะแสดงในภาพนี้จาก Wikipediaป้อนคำอธิบายรูปภาพที่นี่

วงรี / วงกลมจึงมีความเป็นไปได้ แต่ไม่ใช่เพียงพาราโบลาหรือไฮเพอร์โบลาเพียงอันเดียวเท่านั้น (และฉันเดาได้ว่าระนาบผ่านดวงตาแม้แต่กรณีที่เสื่อมทราม) เป็นไปได้


1
ฉันไม่สามารถจินตนาการได้ว่าผลลัพธ์จะเป็นรูปโค้งหรือไฮเพอร์โบลาได้อย่างไรแม้ว่าตรรกะของการโต้แย้งของคุณจะสมบูรณ์ บางคำพูดที่ชัดเจนว่ารูปแบบใดที่จะนำไปสู่สิ่งเหล่านี้จะยอดเยี่ยม สิ่งที่ดีที่สุดที่ฉันสามารถทำให้สมองได้คือ "สิ่งที่ต้องทำกับอินฟินิตี้อย่างใด" ...
hippietrail

3
บางทีสิ่งที่เทียบเท่าอาจช่วยได้ ลองนึกภาพว่าคุณกำลังถือคบเพลิง (ไฟฉายสำหรับผู้ที่อยู่ในอเมริกาเหนือ) ซึ่งทำให้ลำแสงรูปกรวยและคุณอยู่ในโกดังที่มืดมิด (ไม่มีที่สิ้นสุด) ส่องไฟฉายไปที่พื้นคุณจะเห็นวงรี ทีนี้ค่อยเอียงแกนของคบเพลิงไปทางแนวนอน วงรีจะยาวขึ้นเรื่อย ๆ จนกระทั่งถึงจุดที่ 'ขอบ' บนสุดของลำแสงตัวเองเป็นแนวนอนนั่นคือขนานกับพื้น ตอนนี้การฉายภาพเป็นพาราโบลาและมันยืดไปตลอดกาล การเอียงขึ้นไปอีกจะเป็นไฮเปอร์โบลา
Simon F

1
@hippietrail: อาจจะเป็นที่น่าสังเกตว่าเครื่องบินมุมมองด้านหน้ากล้องวิธีเดียวที่คุณสามารถจบด้วยพาราโบลาหรือไฮเปอร์โบลาคือถ้าอย่างน้อยส่วนหนึ่งของทรงกลมอยู่ระหว่างจุดโฟกัสและระนาบการมองเห็น
Ilmari Karonen

@IlmariKaronen: "จุดโฟกัส" หมายความว่าอะไรในบริบทนี้ จุดที่ตาเพ่งความสนใจไปที่? จุดที่หายไป? (ฉันสอนการหมุนมุมมอง 3 มิติและการฉายภาพเมื่ออายุ 12 หรือ 13 ปีและไม่เคยมีความคล่องแคล่วในวิชาคณิตศาสตร์และคำศัพท์)
hippietrail

@hippietrail จุดโฟกัสในบริบทนี้จะเป็นจุดสูงสุดของกรวย อย่างมีประสิทธิภาพ "รูเข็ม" ของมุมมองรุ่นกล้องรูเข็ม (PS ไม่ชื่อหมายความประชุม "ผู้หญิงแปลกเธอทำให้ฉันประสาท .. ."?)
ไซม่อนเรนไฮน์

14

นี่เป็นความคิดเห็นที่ยาวกว่าสำหรับคำตอบของ @ SimonF ที่ฉันพยายามทำให้มีอยู่ในตัว

สามารถตัดกรวยได้ทั้งหมดไฮเพอร์โบลาพาราโบลาและวงรี การทดสอบนี้ทำได้ง่ายโดยการวาดภาพในเอนจิ้น 3D ด้วยกล้องมุมกว้างมาก หมุนกล้องเพื่อพูดในมุม 30 องศาเพื่อให้วัตถุไม่ได้อยู่ในโฟกัสของคุณ จากนั้นค่อยๆขยับกล้องให้ใกล้กับทรงกลมมากขึ้น

ป้อนคำอธิบายรูปภาพที่นี่

Image 1:บินไปใกล้กับทรงกลมที่มองออกไปด้านข้างเล็กน้อย สังเกตว่าเราเจาะพื้นผิวด้านในได้อย่างไร

ดังนั้นการสรุปเมื่อทรงกลมอยู่ใกล้มากดังนั้นจึงออกจากภาพในรูปแบบกว้างมันอาจเป็นรูปโค้งหรือไฮเปอร์โบลา แต่รูปร่างจะออกจากเฟรมเพื่อทำเช่นนั้น


1
สิ่งที่อาจจะดีจริงๆก็คือถ้าแอนิเมชันของคุณสามารถเปลี่ยนการแรเงาสำหรับผลลัพธ์ต่าง ๆ ได้: บอกสีขาวสำหรับวงรีสีเขียว (สำหรับ 'หนึ่งเฟรม' ของพาราโบลา) และสีแดงสำหรับไฮเพอร์โบลา :-)
Simon F

2
@SimonF ฉันคิดเกี่ยวกับเรื่องนี้ฉันกำลังวางแผนบางอย่างเช่นนาธานกก แต่ฉันกำลังรีบหน่อยฉันโชคดีมากที่ทำสิ่งนี้เสร็จ ตอนแรกฉันค่อนข้างสงสัยว่าจะมีไฮเปอร์โบลาอยู่หรือไม่ แต่ใช่ตอนนี้ดูเหมือนจะชัดเจน
joojaa

13

ระบบการฉายจะใช้ในการแปลงรูปร่าง 3D เป็นรูปร่างภาพถ่าย (2D)

ตามประเภทของระบบการฉายภาพผลลัพธ์และรูปร่างที่แตกต่างกันเช่นสี่เหลี่ยม, พาย, วงรี, วงกลม, ... สามารถสร้างขึ้นจากทรงกลม

ระบบการฉายภาพสามารถจำแนกตามลักษณะของผลลัพธ์ที่ได้

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

สมมติว่าโลกของคุณคือโลก!

ลองจินตนาการถึงโลกว่าเป็นทรงกลมของคุณและแผนที่โลกระนาบที่สร้างขึ้นจากรูปทรงกลมของโลก ในแผนที่โลกส่วนใหญ่คุณเห็นว่าประเทศที่อยู่ใกล้กับเสานั้นใหญ่กว่าในความเป็นจริงอย่างไอซ์แลนด์ซึ่งเป็น 1/14 ของทวีปแอฟริกาในความเป็นจริง แต่แผนที่แสดงให้พวกเขาเห็นว่าเท่าเทียมกัน นี่เป็นเพราะเมื่อเราข้ามมิติหนึ่งไปเราจะสูญเสียคุณสมบัติของรูปร่างของเรา

ระบบการฉายภาพที่แตกต่างกันและผลลัพธ์ของมัน

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

เป็นครั้งแรก

เท่าเทียมกันดูไอซ์แลนด์และแอฟริกาในอันนี้และเปรียบเทียบกับข้างบน

ที่สอง

ระบบการฉายสามารถจำแนกตามสิ่งที่พวกเขารักษา

  1. พื้นที่เท่ากัน
  2. มุมเท่ากันซึ่งรักษารูปร่างโดยไม่ผิดเพี้ยน
  3. ระยะทางเท่ากัน
  4. ......

การคาดการณ์ตามมาตรฐานรักษารูปร่าง แต่พื้นที่จะไม่ได้รับการอนุรักษ์ (ภาพแรกด้านบน) อันนี้เป็นระบบการฉายที่มีชื่อเสียงที่สุดที่ใช้ในการใช้งานจำนวนมาก ทรงกลมของคุณเป็นรูปสี่เหลี่ยมผืนผ้าที่นี่!


ดังนั้นคุณไม่สามารถบอกว่าทรงกลมจะถูกฉายเป็นวงรีเสมอ ดังที่กล่าวไว้ข้างต้นทรงกลมสามารถฉายเป็นรูปสี่เหลี่ยมผืนผ้า (รูปร่างแรก) หรืออาจเป็นรูปวงรี แต่มีลักษณะต่าง ๆ (มุมเท่ากัน, ระยะทาง, รูปร่าง, พื้นที่ - ดูรูปต่อไปนี้) หรือคุณอาจฉายทรงกลมเป็นรูปกรวย จากนั้นเปิดกรวยเพื่อที่คุณจะได้วงกลม

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

ที่สาม


ในการคาดการณ์มุมมองฉันบอกว่าใช่มีเพียงจุดไข่ปลาเท่านั้นที่เกิดจากทรงกลม

การตัดรูปกรวยที่มีระนาบแนวนอนสร้างวงกลม

การตัดด้วยระนาบเฉียงทำให้เกิดมุมเอียงซึ่งจะเป็นวงรีหรือไฮเพอร์โบลาขึ้นอยู่กับมุมตัดและเมื่อมุมนี้เอียงเป็นแนวดิ่งจะสร้างพาราโบลา (ตามภาพ)

วงรี

บางทีนี่อาจชัดเจน แต่ลองดูสมการของพวกเขา

เพื่อความง่ายฉันคิดว่ารูปทรงเรขาคณิตทั้งหมดเป็นจุดกำเนิดที่กึ่งกลาง

สมการ:

x2+y2=r2

x2/a2+y2/b2=1

x2/a2y2/b2=1

y2=4ax

สัณฐานวิทยา:

วงรีมีจุดโฟกัสสองจุดอย่างชัดเจน วงกลมที่เป็นจุดไข่ปลาชนิดพิเศษก็มีจุดโฟกัสสองจุดเหมือนกัน แต่พวกมันก็เหมือนกัน ไฮเปอร์โบลาเป็นกระจกแกน ay ของจุดไข่ปลาที่เท่ากันและมันมีจุดโฟกัสสองจุดเช่นกัน พาราโบลามีหนึ่งโฟกัส แต่จริงๆแล้วมันมีสองเพราะอันที่สองอยู่ที่ระยะอนันต์: เมื่อระนาบการตัดเอียงไปที่ 90 องศา (มุมลูกปืน) การโฟกัสที่สองจะไม่มีที่สิ้นสุด

ข้อสรุป

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


2
ขอบคุณสำหรับคำตอบ. โปรดดูภาคผนวกของฉันเกี่ยวกับการประมาณการมุมมอง ขอโทษสำหรับการกำกับดูแลนี้ในถ้อยคำดั้งเดิมของฉัน
hippietrail

2
ใช่ฉันพยายามครอบคลุมในคำถามเดิมของฉัน จุดและส่วนของเส้นตรงเป็นจุดอ่อนอื่น ๆ ที่ฉันเชื่อ
hippietrail

3
@hippietrail: โลกเป็นตัวอย่างที่ดีเยี่ยมสำหรับการคาดการณ์มุมมอง หากคุณถ่ายภาพธรรมดากลางแจ้งให้หันกล้องไปทางขอบฟ้าจากนั้น (สมมติว่าเลนส์ของคุณไม่มีการบิดเบือนและโลกจะอยู่ในทรงกลมที่สมบูรณ์แบบโดยประมาณ) ภาพของโลกในภาพจะเป็น (ส่วนหนึ่งของ) ไฮเปอร์โบลาที่กว้างมาก
Ilmari Karonen

1
@IlmariKaronen: ว้าวที่ทำให้ชัดเจนและคุ้มค่าที่จะตอบคำถามของตัวเอง! จะมีรุ่นนี้ที่จะส่งผลให้เป็นรูปโค้งหรือไม่?
hippietrail

1
@hippietrail ฉันจะเพิ่มคำอธิบายในตอนท้ายของคำตอบหวังว่ามันจะสามารถตอบคำถามในด้านการแก้ไขได้ และขอบคุณสำหรับความสมบูรณ์ของคุณ
Iman

11

เหตุผลของ SimonF ทำให้ฉันมั่นใจ แต่ฉันตัดสินใจที่จะตรวจสุขภาพจิต ฉันโหลดระดับ UE4 ที่มีลูกกลมเช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันตั้งค่ากล้อง FOV สูงสุด 160 องศาให้มุมมองที่ผิดเพี้ยนจำนวนมากและจัดวางตำแหน่งให้ทรงกลมอยู่ใกล้มุมของภาพ:

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นฉันก็นำสิ่งนี้ลงใน Inkscape และใช้เครื่องมือวงรีเพื่อวาดบนมัน:

ป้อนคำอธิบายรูปภาพที่นี่

เซอร์ไพร์ส! มันเป็นแบบที่สมบูรณ์แบบ!


1
ตัวอย่างที่สวยงามมาก! คุณคิดอย่างไรเกี่ยวกับการแก้ปัญหากรณีพาราโบลาและไฮเพอร์โบลา
hippietrail

2
@hippietrail แต่น่าเสียดายที่โปรแกรมเวคเตอร์อาร์ตไม่มีพาราโบลาและเครื่องมือไฮเปอร์โบลาในแบบที่พวกเขามีเครื่องมือวงรีดังนั้นมันจึงยากกว่านี้ ... :)
Nathan Reed

@NathanReed แน่ใจ แต่มีเครื่องมือสร้างกราฟทั่วไป (ถ้าไม่ใช่คุณสามารถหาได้จากฉัน) ทำกราฟพาราโบลาทั่วไปและสเกล / หมุนให้พอดี
joojaa

-1

ไม่มีรูปโค้งหรือไฮเปอร์โบลาเกิดขึ้นเมื่อแบ่งทรงกลมหนึ่งครั้ง ไม่มีจุดไข่ปลาทั้งยกเว้นกรณีพิเศษซึ่งเป็นวงกลมผลเสมอวงกลม หากคุณฉายทรงกลมบนระนาบที่เอียงคุณจะได้วงรี


1
คำตอบอื่น ๆ ระบุว่าสามารถสร้างรูปร่างอื่นที่ไม่ใช่วงรีได้ คุณช่วยอธิบายได้ไหมว่าทำไมพวกเขาถึงไม่ถูกต้อง?
Simon F
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.