मेरे पास एक सर्कल है जो हर 10 सेकंड में कक्षा करता है। और मैं कैमरे के कोण को ध्यान में रखते हुए कक्षा मूल (प्रकाश स्रोत) की तरफ एक छाया डालने की कोशिश कर रहा हूं।एक सर्कल के चारों ओर एक छाया को स्थानांतरित करना
छाया कुछ कोणों के लिए काम करती है लेकिन जैसे ही कैमरा अधिक बढ़त पर या अधिक ऊपर जाता है, यह कम सटीक दिखता है और मुझे नहीं पता कि इसके लिए कैसे सही किया जाए - यह एक जटिल गणित के मुद्दे की तरह लगता है कि मैं हल करने के तरीके को समझने के लिए संघर्ष कर रहे हैं। http://jsfiddle.net/8y2bm88w/
और छाया के लिए मेरे ड्रा कोड:
ctx.beginPath();
//rotate shadow with the planet
ctx.translate(originX + obj[i].x, originY + obj[i].y);
ctx.rotate(obj[i].angle); //rotate around origin
ctx.translate(-(originX + obj[i].x), -(originY + obj[i].y));
var offsetX = -(10 * Math.sin(obj[0].angle)); //i feel this is the issue
var offsetY = 0; //this too
ctx.rect(originX + obj[i].x + offsetX, originY + obj[i].y + offsetY - 10, 20, 20);
ctx.fillStyle = 'rgba(213,0,0,0.9)'; //red shadow - easier to see
ctx.fill();
कोड के रूप में यह अधिक संदर्भ में कोड डालता JSFiddle माध्यम से और अधिक समझ में आता है
इस एनीमेशन है।
तो मुझे लगता है कि यह offsetX
और offsetY
चर के लिए गणित के साथ करना है, क्योंकि उपयोगकर्ता कैमरे कोण को ऑफ़सेट की आवश्यकता को समायोजित करने और जिस तरह से छाया चलता है उसे बदलने के लिए बदलता है। लेकिन, यह वास्तव में भ्रमित करने में उलझन में है।
तो है, अगर मैं सही ढंग से समझ, आप की गोलार्द्ध चाहते सर्कल का उद्भव होने वाली उत्पत्ति का सामना करना पड़ता है, और बाकी अंधेरे होते हैं। कैमरा कोण के बावजूद यह सच है। सही बात? –
@AsadSaeeduddin इसे उस कोण को ध्यान में रखना चाहिए जिसे आप ग्रह देख रहे हैं। तो मुझे विश्वास है कि आप सही ढंग से समझ गए हैं। – Sir
@AsadSaeeduddin अच्छा बिंदु, मूल रूप से इसे दर्शक की आंखों से सही दिखने की आवश्यकता है। यदि आप 'कैमरा कोण = 0' पर किनारे देखते हैं तो इसे पूर्ण छाया और छाया नहीं डालना चाहिए, ऊपर' कैमरा कोण = 1' नीचे यह आधा छाया डालेगा। – Sir