PDA

View Full Version : ایجاد نقاط بر روی شی دایره



saed2006
یک شنبه 25 بهمن 1388, 10:15 صبح
میخوام از روی نقطه ای از دایره با مختصات x و y
نقاطی به فاصله k از هم روی دایره بچینم
وروذی:
مشخصات دایره و نقطه شروع و فاصله k
خروجی :
x و y نقاط با فاصله k از هم که به صورت ترتیبی از نقطه شروع بدست امده اند

nima898
یک شنبه 25 بهمن 1388, 10:59 صبح
یا سوالتون یکم مبهمه یا من دقیقا متوجه نمیشم :
- تمام نقاط فاصلشون از هم k باشه ؟
- چند تا نقطه بوجود بیاد ؟
- منظورت از "نقطه ای از دایره " نقطه ای روی محیط دایرست؟

saed2006
یک شنبه 25 بهمن 1388, 11:12 صبح
- تمام نقاط فاصلشون از هم k باشه ؟
بله تمام نقاط فاصله k داشته باشن


- چند تا نقطه بوجود بیاد ؟
تعداد بستگی به مقدار k داره


- منظورت از "نقطه ای از دایره " نقطه ای روی محیط دایرست؟
بله یک نقطه روی محیط دایره

nima898
یک شنبه 25 بهمن 1388, 23:11 عصر
پیامتون خوندم
من هنوزم سوال برام مبهمه
روی یک صفحه (یا دایره) بیشتر از 3 نقطه نمیتونه باشه که فاصله هاشون با هم برابر باشه در حالی که :


نقل قول:
- چند تا نقطه بوجود بیاد ؟
تعداد بستگی به مقدار k داره


بعد اینکه الگوریتم میخواید یا کد؟

saed2006
دوشنبه 26 بهمن 1388, 09:02 صبح
double x;
double y;
double alpha = 0;
double inc = 0;
bool frs = true;
double degre = 0.012955021251916672577319587628866;
for (double i = 0; i < 485; i++)
{
x = Math.Round(cr.Center.X + cr.Radius * Math.Cos(alpha), 2);
y = Math.Round(cr.Center.Y + cr.Radius * Math.Sin(alpha), 2);
alpha = degre + inc;

result.Add(d.ActiveDocument.Entities.AddCircle(new double[] { x, y, 0 }, 10));

}

saed2006
دوشنبه 26 بهمن 1388, 09:06 صبح
این کدی که دادم کار هم میکنه
اما من میخوام بر حسب یک طولی این تقسیم بگیره
و بعد از اون از یک نقطه خاص روی محیط دایره شروع بشه و به ترتیب نقاط بیرون بیاد

nima898
دوشنبه 26 بهمن 1388, 18:21 عصر
گرفتم چی میخوای
فقط یه مورد میمونه که اگه مقدار k محاسبه شده نباشه آخرین نقطه فاصلش با اولین نقطه k نخواهد بود
من روش فکر میکنم و الگوریتمش میذارم...

اَرژنگ
سه شنبه 27 بهمن 1388, 04:49 صبح
گرفتم چی میخوای
فقط یه مورد میمونه که اگه مقدار k محاسبه شده نباشه آخرین نقطه فاصلش با اولین نقطه k نخواهد بود
من روش فکر میکنم و الگوریتمش میذارم...
چطوری رویه چیزی که درست تعریف نشده میشه فکر کرد و الگریتم پیدا کرد؟


اگر k مضربی از محیط دایره نباشد این کار معنی نمیده، به عنوان مثال اگر محیط دایره ۳.۱ باشد و k=۱ باشد، نقاط را کجا رسم کنیم، یا اینکه چند تا نقطه به فاصله k رسم کنیم.

اگر میخواهید دایره را به k قسمت تقسیم کنید سوال یک چیز دیگر است، ولی در حالت کنونی اینکه هدفتان چی هست را درک نمیکنم.

nima898
سه شنبه 27 بهمن 1388, 10:58 صبح
چطوری رویه چیزی که درست تعریف نشده میشه فکر کرد و الگریتم پیدا کرد؟

درست می فرمایید اگه مقدار k محاسبه شده نباشه حاصل به این شکل در میاد
(چهار خط سیاه طولشون 61 هست و خط قرمز طولش 52 هست)
(ضمنا اونطور که من متوجه شدم فاصله از روی محیط دایره نیست بلکه فاصله مستقیمه که تو اصل قضیه ای که گفتید تفاوتی نداره)

اگر k مضربی از محیط دایره نباشد
(محیط دایره باید مضربی از k باشه ...

nima898
سه شنبه 27 بهمن 1388, 12:06 عصر
رسیدم به دو معادله دو مجهولی :


(x1-x2)^2 +(y1-y2)^2=k
(x3-x2)^2 +(y3-y2)^2=r

که x2,y2 مجهولند
x1,y1 همون x,y نقطه شروع روی دایرست
x3,y3 مختصات دایرست

از دو معادله بالا یک معادله یک مجهولی بدست میاد :


(x3-x1+sqr(k-(y1-y2)^2))^2+(y3-y2)^2=r

این معادله رو نتونستم حلش کنم اگه کسی بیتونه حلش کنه میشه الگوریتمش رو نوشت

اَرژنگ
سه شنبه 27 بهمن 1388, 13:05 عصر
رسیدم به دو معادله دو مجهولی :


(x1-x2)^2 +(y1-y2)^2=k
(x3-x2)^2 +(y3-y2)^2=r

که x2,y2 مجهولند
x1,y1 همون x,y نقطه شروع روی دایرست
x3,y3 مختصات دایرست

از دو معادله بالا یک معادله یک مجهولی بدست میاد :


(x3-x1+sqr(k-(y1-y2)^2))^2+(y3-y2)^2=r

این معادله رو نتونستم حلش کنم اگه کسی بیتونه حلش کنه میشه الگوریتمش رو نوشت

"اگر"ی نیست، حل این معداله‌ها برایه بدست آوردن الگیرتم این چیزی که با تصویر فراستده شده بود الزامی بوجود نمیارند.

nima898
سه شنبه 27 بهمن 1388, 15:42 عصر
"اگر"ی نیست، حل این معداله‌ها برایه بدست آوردن الگیرتم این چیزی که با تصویر فراستده شده بود الزامی بوجود نمیارند.
متوجه منظورتون نشدم اون تصویر یه مثال بود از اینکه اگه مقدار k محاسبه شده نباشه حاصل الگوریتم یه شکل غیر منتظم خواهد بود

اَرژنگ
چهارشنبه 28 بهمن 1388, 11:02 صبح
متوجه منظورتون نشدم اون تصویر یه مثال بود از اینکه اگه مقدار k محاسبه شده نباشه حاصل الگوریتم یه شکل غیر منتظم خواهد بود

الگریتمی وجود ندارد که حاصل داشته باشد، چه شکل منظم و یا نامنظم. هنوز اینکه سوال چی هست مشخص نیست چه برسه که زمان را برایه جواب سوال مبهم تلف کنیم.

منظور من این بود که احتیاجی به حل کردن معادله‌ها ۲ مجهولی درجه دوم برایه بدست آوردن الگریتمی که از شکل استنباط میشه نیست، و وقتی که سوال واضح توضیح نداده شده، جواب را بر چه مبنائی میشه بدست آورد؟
۱.سوال واضح نیست چی میخاد، الگریتم ساختن برایه یک چیزه بی مفهوم معنی ندارد.
۲.با هندسه ساده میشه نقاط رویه دایره را برایه k بدست آورد (برایه تصویری که شما فرستاده بودید، هنوز اینکه سوال همان است که سوال کننده دنبالش است بماند).

nima898
چهارشنبه 28 بهمن 1388, 12:32 عصر
متوجه شدم کاملا حق با شماست. (سوال هنوز هم ابهاماتی داره...)

saed2006
چهارشنبه 28 بهمن 1388, 15:25 عصر
چطوری رویه چیزی که درست تعریف نشده میشه فکر کرد و الگریتم پیدا کرد؟


اگر k مضربی از محیط دایره نباشد این کار معنی نمیده، به عنوان مثال اگر محیط دایره ۳.۱ باشد و k=۱ باشد، نقاط را کجا رسم کنیم، یا اینکه چند تا نقطه به فاصله k رسم کنیم.

اگر میخواهید دایره را به k قسمت تقسیم کنید سوال یک چیز دیگر است، ولی در حالت کنونی اینکه هدفتان چی هست را درک نمیکنم.

k=واحد طول
یعنی نقاط روی دایره به فاصله یک واحد از هم باشند
اگر محیط 3.1 بود 3 تا نقطه به فاصله یک از هم داریم

nima898
چهارشنبه 28 بهمن 1388, 15:43 عصر
k=واحد طول
یعنی نقاط روی دایره به فاصله یک واحد از هم باشند
اگر محیط 3.1 بود 3 تا نقطه به فاصله یک از هم داریم
منظورتون اینه که فاصله ها از روی محیط دایرست (یا فاصله مستقیم مطابق تصویری که گذاشتم)
ضمنا اون معادله رو هنوز کسی حل نکرده

saed2006
چهارشنبه 28 بهمن 1388, 15:47 عصر
منظورتون اینه که فاصله ها از روی محیط دایرست (یا فاصله مستقیم مطابق تصویری که گذاشتم)
ضمنا اون معادله رو هنوز کسی حل نکرده
نقاط روی محیط دایره هستند

saed2006
چهارشنبه 28 بهمن 1388, 15:51 عصر
double x;
double y;
double count = Math.Floor(cr.Lenght);
double degre = Math.Abs(cr.stangle - cr.edangle) / count;
double alpha = stangl;
while (ArcProcIsFinished(stangl, edangl, ref alpha, degre, revers))
{
x = Math.Round(cr.Center.X + cr.Radius * Math.Cos(alpha));
y = Math.Round(cr.Center.Y + cr.Radius * Math.Sin(alpha));
result.Add(new double[] { x, y, 0 });
}

اَرژنگ
چهارشنبه 28 بهمن 1388, 16:47 عصر
k=واحد طول
یعنی نقاط روی دایره به فاصله یک واحد از هم باشند
اگر محیط 3.1 بود 3 تا نقطه به فاصله یک از هم داریم
۳ تا نقطه به فاصله یک از همدیگر داریم یعنی حی؟
اگر میخواهید بگید که اگر هر نقطگ ‌ای را نتخواب کنیم فاLه‌اش از هر نقطه دیگر ۱ است شاید یک معنی بده ولی این داستان هنوز گنگ است.

nima898
چهارشنبه 28 بهمن 1388, 17:14 عصر
نقاط روی محیط دایره هستند
میدونم نقاط روی دایره هستند دوباره سوالو با دقت بخونید

newamir
چهارشنبه 28 بهمن 1388, 22:44 عصر
ببینید یک معادله ساده وجود داره. اگر alpha زاویه ی هر کمان متناظر با قطعه های رسم شده باشه و Radious هم همون شعاع باشه:
sin(alpha/2)=(k/2)/Radious
پس alpha رو میشه اینطوری حساب کرد:
alpha=2*arcsin((k/2)/Radious)
اگر alpha رو داشته باشیم و beta زاویه اولین نقطه داده شده باشه. زاویه نقطه i ام هست:
beta+i*alpha
و تا جایی که i*alpha از 360 درجه کوچیکتره کارو ادامه میدیم. یعنی x, y رو برای نقاط از طریق شعاع دایره و زاویه اونها حساب میکنیم.

saed2006
پنج شنبه 29 بهمن 1388, 11:25 صبح
واسه ارک چی کار کنم

اَرژنگ
پنج شنبه 29 بهمن 1388, 12:35 عصر
ببینید یک معادله ساده وجود داره. اگر alpha زاویه ی هر کمان متناظر با قطعه های رسم شده باشه و Radious هم همون شعاع باشه:
sin(alpha/2)=(k/2)/Radious
پس alpha رو میشه اینطوری حساب کرد:
alpha=2*arcsin((k/2)/Radious)
اگر alpha رو داشته باشیم و beta زاویه اولین نقطه داده شده باشه. زاویه نقطه i ام هست:
beta+i*alpha
و تا جایی که i*alpha از 360 درجه کوچیکتره کارو ادامه میدیم. یعنی x, y رو برای نقاط از طریق شعاع دایره و زاویه اونها حساب میکنیم.
درسته که این معاده ساده وجود دارد، ولی سوال چی هست؟ این معادله برایه شکلی که یکی که دارد میپرسه سوال این هست فرستاده شده بود، سوال اصلی هنوز گنگ مانده.
این معادله ساده را میشه به جایه حل کردن اون معادله دو مجهولی درجه دوم استفاده کرد ولی بازهم سوال چی هست معلوم نیست.
اگر در پست بعدی این که سوال چی هست توضیح داده نشه دیگر زمان هدر این توپیک نمیدم، کسی که توپیک رو زده یک توضیح کامل نداده که بدونیم چی میخواد.

اَرژنگ
پنج شنبه 29 بهمن 1388, 12:37 عصر
واسه ارک چی کار کنم
Math.Asin
http://msdn.microsoft.com/en-us/library/system.math.asin.aspx