บทนำ
hypercube / tesseract เทียบเท่ากับ 4 มิติของคิวบ์ปกติ มันทำโดยนำลูกบาศก์สุทธิขยายไปยังมิติที่ 3 จากนั้นใช้มิติที่ 4 พับลงในไฮเปอร์คิวบ์ มันคือลูกบาศก์โดยที่แต่ละด้านเป็นลูกบาศก์
ในการสร้างไฮเปอร์คิวบ์คุณต้องมี 16 เวกเตอร์ 4 มิติ (เวกเตอร์ที่มีx
a y
, a z
และ a w
ส่วนประกอบ) เวกเตอร์เหล่านี้มีดังต่อไปนี้:
A(0, 0, 0, 0); B(1, 0, 0, 0); C(1, 0, 1, 0); D(0, 0, 1, 0); E(0, 1, 0, 0); F(1, 1, 0, 0); G(1, 1, 1, 0); H(0, 1, 1, 0);
I(0, 0, 0, 1); J(1, 0, 0, 1); K(1, 0, 1, 1); L(0, 0, 1, 1); M(0, 1, 0, 1); N(1, 1, 0, 1); O(1, 1, 1, 1); P(0, 1, 1, 1);
ไฮเปอร์คิวบ์มี 24 ใบหน้า รายการต่อไปนี้มีทั้งหมด (ทุกกลุ่มทำเครื่องหมายรูปสี่เหลี่ยม):
ABFE, CDHG, BCGF, DAEH, DCBA, FEHG
IJNM, KLPO, JKON, LIMP, LKJI, PMNO
ABJI, DCKL, BCKJ, DAIL, FEMN, GHPO, FGON, EHPM, EAIM, BFNJ, CGOK, HDLP
ด้วยข้อมูลทั้งหมดนี้คุณมีเทคนิค hypercube ในรหัส ในการหมุนคุณต้องมีเมทริกซ์ที่แตกต่างกัน 6 ตัวสำหรับแต่ละระนาบการหมุนหนึ่งอันสำหรับเครื่องบิน YZ, XZ, XY, XW, YW และ ZW หลังจากที่คุณมีเมทริกซ์ทุกตัวคุณจะต้องคูณยอดของลูกบาศก์กับพวกเขา
ภาพต่อไปนี้แสดงโครงสร้างของแต่ละเมทริกซ์:
สำหรับการหมุนบนเครื่องบิน YZ:
สำหรับการหมุนบนระนาบ XZ:
สำหรับการหมุนบนระนาบ XY:
สำหรับการหมุนบนระนาบ XW:
สำหรับการหมุนบนระนาบ YW:
สำหรับการหมุนบนระนาบ ZW:
การหมุนจะถูกนำไปใช้ตามลำดับนี้
หลังจากทั้งหมดนี้คุณมี hypercube ที่หมุน ตอนนี้คุณต้องวาดมัน คุณควรใช้การฉายฉากร่วมกับการฉายมุมมองที่จะส่งไปยัง(x, y, z, w)
(2x/(2+z), 2y/(2+z))
อินพุต
ข้อมูลของคุณคือ 6 จำนวนเต็มระหว่าง 0 (รวม) และ 360 (เฉพาะ) สิ่งเหล่านี้แสดงถึงการหมุนเป็นองศาในระนาบการหมุนที่แตกต่างกันของไฮเปอร์คิวบ์
เอาท์พุต
ผลลัพธ์ของคุณควรเป็นภาพเดียวที่มีไฮเปอร์คิวบ์ การแสดงผลอาจเป็นภาพแรสเตอร์หรือภาพเวกเตอร์หรือศิลปะ ASCII ภาพที่ส่งออกควรมีอย่างน้อย 100 * 100 พิกเซลและคิวบ์ต้องใช้เวลาอย่างน้อย 50% ของหน้าจอ อนุญาตให้ใช้รูปแบบเอาต์พุตรูปภาพเริ่มต้นใด ๆ
กรณีทดสอบ
0 0 0 0 0 0
0 0 0 0 0 30
30 0 0 0 0 30
0 0 0 30 30 30
45 45 45 0 0 0
45 45 45 45 45 45
เปิดภาพในแท็บใหม่เพื่อดูภาพขนาดเต็ม
กฎระเบียบ
- ใช้กฎเริ่มต้น
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ