นัดกับแสง

บทที่เพิ่มใน DSM 1.1 ให้ปฏิทินรู้จักฟ้า: ดวงอาทิตย์ ดวงจันทร์ ทางช้างเผือก และปรากฏการณ์ที่มองเห็นได้ด้วยตาเปล่า ทุกอย่างคำนวณในเครื่อง ไม่ต่อเน็ต ไม่ขอสิทธิ์ตำแหน่ง มีเป้าหมายสองข้อ คือถ่ายรูปให้ได้แสงที่ต้องการ กับทำให้นัดสำคัญอย่างเดท มื้อเย็นกับครอบครัว หรือทริป ได้เวลาและทิศที่ดีที่สุดของวันนั้น ตัวเลขในบทนี้เป็นค่าจริงของ 27 ก.ย. ถึง 31 ต.ค. 2569 ลากแถบเวลาด้านบนแล้วทุกจอขยับตาม บทนี้อนุมัติแล้ว แต่แอปยังไม่ได้ทำตาม

ในบทนี้

หน้าฟ้า ลากโดมเพื่อหมุนและเอียง ลากแถบเวลาเพื่อดูชั่วโมงอื่น แตะแถบด้านล่างเพื่อเปลี่ยนเป็นดวงจันทร์หรือทางช้างเผือก (360×780 dp)

หลักของระบบฟ้า

หกข้อในภาพรวมยังใช้ครบ ข้อด้านล่างเพิ่มเข้ามาเฉพาะเรื่องฟ้า ถ้าเจอกรณีที่ไม่ได้เขียนไว้ ให้เลือกทางที่ตรงกับข้อเหล่านี้

ฟ้าเป็นฉาก ไม่ใช่กิจกรรม

ของบนฟ้าไม่มีสีของตัวเอง ใช้หมึกกับสีของแถบฟ้าเท่านั้น สีสดบนจอยังเป็นของกิจกรรมของผู้ใช้ กับสีของตอนนี้ซึ่งคือดวงอาทิตย์

พูดเมื่อเปลี่ยนการตัดสินใจ

วันธรรมดาที่ฟ้าไม่มีอะไร ปฏิทินหน้าตาเท่าเดิม ฟ้าจะขึ้นมาบนนัดก็ต่อเมื่อมันทำให้นัดดีขึ้นได้ หรือเวลาที่ตั้งไว้กำลังจะพลาด

ทิศต้องชี้ได้จริง

ทุกทิศที่บอกเป็นองศามีภาพให้หันตาม โดมหมุนตามเครื่อง ด้านไกลของโดมคือด้านที่กำลังหันหน้าไป

แถบฟ้าเส้นเดียวกันทุกที่

เส้นทางดวงอาทิตย์บนโดมคือแถบฟ้า 24 ชั่วโมงของ drawer ที่ดัดขึ้นไปบนฟ้า ใช้สีชุดเดียวกัน ตำแหน่งบนแถบกับบนโดมจึงอ่านเทียบกันได้

เฉพาะที่ตามองเห็น

ปรากฏการณ์ต้องเห็นได้ด้วยตาเปล่า จากที่ที่ผู้ใช้อยู่ ในเวลาที่ฟ้ามืดพอ ถ้าไม่ครบสามข้อก็ไม่ขึ้นปฏิทิน

บอกสิ่งที่ไม่รู้

แอปรู้เรขาคณิตของฟ้า ไม่รู้เมฆ ภูเขาที่บังขอบฟ้า และแสงเมือง ทุกจอที่ชวนให้ออกไปดูต้องบอกข้อนี้ไว้ในประโยคเดียว

สามจอที่เปลี่ยน

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

หน้าแรก แตะวันที่ 3, 4, 10 หรือ 26 เพื่อดูวันที่ฟ้ามีเรื่อง
หน้าฟ้า คืนเดือนมืด 10 ต.ค. ที่ดอยอินทนนท์ 19:40
รายละเอียดของนัด เวลาที่ตั้งไว้พลาดใจกลางทางช้างเผือก

จากเอกสารไปโค้ด

ทั้งหมดเป็นฟังก์ชันล้วนใน core/model ทดสอบได้แบบเดียวกับ ColorMathTest ไม่มีสิทธิ์ใหม่ใน manifest และไม่มีอะไรเขียนลง Calendar Provider จนกว่าผู้ใช้จะกดนัดเอง

ส่วนในโค้ดงานหน้า
ตำแหน่งดวงอาทิตย์ ดวงจันทร์ ดาวเคราะห์SkyCalculator ใน core/model เรียก Astronomy Engine (io.github.cosinekitty:astronomy, MIT)ใหม่ แทน SolarCalculator กับ LunarCalculatorเข็มทิศฟ้า
ฟ้าของหนึ่งวันSkyDay: ขึ้น ตก แสงทอง ฟ้าน้ำเงิน มืดสนิท จันทร์ขึ้นตก ผ่าน LocalDaylightขยายจาก SunTimesปฏิทิน
ชั้นฟ้าบนเดือนlayoutWeek() ชั้นที่สี่ กับ WeekPainter วาดดวงจันทร์และดาวปรับปฏิทิน
ปรากฏการณ์skyEvents(range, place) คำนวณสด รวมเข้า MonthEvents ใน CalendarRepository ตารางฝนดาวตกอยู่ใน assets/skyใหม่ ไม่เขียนลง providerปรากฏการณ์
ทางช้างเผือกmilkyWayNight(date, place)ใหม่ปรากฏการณ์
หน้าฟ้าSkyRoute(date, time, place) เป็น PaneRoute ใน ui/sky/ โดมวาดบน Canvas เดียว หมุนด้วย TYPE_ROTATION_VECTOR แก้ทิศเหนือจริงด้วย GeomagneticFieldใหม่เข็มทิศฟ้า
โอกาสของนัดOccasion เก็บใน Room คู่กับสีที่กำหนดเอง ผูกด้วย sync idใหม่แสงกับนัด
เวลาที่ฟ้าเป็นใจ และคำเตือนsuggestTimes(occasion, date, place), lightHint(event)ใหม่แสงกับนัด
ที่ของฟ้าDaylightRepository: สถานที่ของนัด (Geocoder ของระบบ) ก่อน แล้วทริปของวันนั้น แล้วเมืองที่เลือกในตั้งค่า แล้วเมืองหลักของเขตเวลาปรับแสงกับนัด
แจ้งเตือนตามฟ้าWidgetRefresh แบบเดียวกัน: setWindow ไม่ปลุกเครื่อง ไม่ขอสิทธิ์ exact alarmใหม่แสงกับนัด

ตั้งแต่ 1.1 เวลาขึ้นตกของฉากตัวอย่างในทุกหน้าเป็นค่าที่คำนวณได้จริงของกรุงเทพฯ วันที่ 2 ต.ค. 2569 คือ 06:07 กับ 18:07 (1.0 ประมาณไว้ที่ 06:09 กับ 18:03)

ขอบเขตที่เลือกไว้

สามเรื่องนี้เปลี่ยนหน้าตาไม่มาก แต่เปลี่ยนความแม่นและขอบเขตของงาน แต่ละข้อบอกทางที่เลือก และเมื่อไรควรกลับมาดูใหม่