لدي بعض التعليمات البرمجية التي تولد كواكب ذات أحجام ومواضع عشوائية في لوحة قماشية. وظيفة المولد الخاصة بي تجعلها قريبة جدًا من بعضها البعض، هل تفكر في أي حلول؟

//مقدمة.tsx
استيراد { OrbitControls, Stars } من '@react-three/drei'
استيراد { Canvas } من '@react-three/fiber'
استيراد الرابط من "الرابط/التالي"
استيراد { useEffect, useRef, useState} من 'react'
استيراد \* كـ ثلاثة من "ثلاثة"

استيراد الكوكب من "./Planet"
استيراد صاروخ من "./Rocket"

مقدمة ثابتة = () => {
 const [target, setTarget] = useState(null)
 const [الكواكب، setPlanets] = useState([])

 استخدام التأثير (() => {
 const RandomPosition = (الحد الأدنى، الحد الأقصى) => {
 النطاق الثابت = الحد الأقصى - الحد الأدنى
 إرجاع الحد الأدنى + Math.random() \* النطاق
 }

 حجم ثابت عشوائي = (الحد الأدنى، الحد الأقصى) => {
 النطاق الثابت = الحد الأقصى - الحد الأدنى
 إرجاع الحد الأدنى + Math.random() \* النطاق
 }

 لون ثابت عشوائي = () => {
 إرجاع '#' + Math.floor(Math.random() \* 16777215).toString(16)
 }

 مقياس ثابت = 10

 const generatorRandomPlanets = (numPlanets, minDistance) => {
 الكواكب الثابتة = []
 دع المحاولات = 0

 بينما (الكواكب. الطول < عدد المحاولات && < 100) {
 محاولات++

 كوكب ثابت = {
 موضع: [
 موقف عشوائي (-30، 30)،
 موقف عشوائي (-30، 30)،
 موقف عشوائي (-30، 30)،
 ]،
 الحجم: حجم عشوائي (1، 5) \* مقياس،
 اللون: لون عشوائي ()،
 حجم الحلقة: 0.2 \* مقياس،
 لون الحلقة: لون عشوائي () ،
 الضوضاء الحلقية: 0.3 \* مقياس،
 }

 // تحقق مما إذا كان الكوكب قريبًا جدًا من أي كوكب موجود
 const TooClose = Planets.some((p) =>
 p.position.some((التنسيق، الفهرس) => {
 إرجاع Math.abs(coord - Planet.position[index]) <minDistance
 })
 )

 إذا (! TooClose) {
 الكواكب.دفع (كوكب)
 }
 }

 عودة الكواكب
 }

 setPlanets(generateRandomPlanets(5, 35))
 }، [])

 const HandlePlanetClick = (الموضع) => {
 console.log ("تم النقر على الكوكب!"، الموضع)
 setTarget(new THREE.Vector3(...الموقف))
 }

 يعود (
 
 
 
 مغامرة كوكب التشفير
===================================================

 استكشف عوالم جديدة واجمع العملات المشفرة النادرة في هذه اللعبة المثيرة
 لعبة مغامرة.
 


 {planets.map((الكوكب، الفهرس) => (
 
 ))}
 {هدف && }
 
العب الان

يتعلم أكثر
 )
}

تصدير المقدمة الافتراضية
{"source": "ewof/sharegpt-instruct-unfiltered-deduped", "kind": "human", "evolved_from": null}