View Full Version : سوال: کمک در رسم اشکال هندسی
farcry
شنبه 05 شهریور 1390, 23:49 عصر
سلام
قبل از پرداختن به همه ی سوال ها در مورد انواع اقسام شکل های هندسی بهتره اول خط رو بپرسم.
برنامه نقاشی ویندوز یک نوع خط هایی رو تولید میکنه سوال من شبیه اوناست.
یک خط ایجاد بشه که با onmousedown یک نقطه درست کنه به دنبال اون با onmousemove خط رو با حرکات
دست ما بکشه.
بعد با onmouseup خط اصلی رو به ما تحویل بده. توی نقاشی ویندوز هم همینطوره.
----------------------------------------------------------------------------------------------------------------
من یه خط می کشم نگاه کنید اینجوری نوشته میشه:
<html>
<body>
<script language="javascript" type="text/javascript">
var cli;
function a1()
{
document.onclick=function(e){
var evt=window.event || e
ax=evt.clientX;
ay=evt.clientY;
a="<div style=\'position:absolute; top:"+ay+"px; left:"+ax+"px; width:1px; height:1px;font-size=10;\'>.</div>"
document.body.innerHTML+=a;
cli="false";
chek();
}
}
function a2()
{
document.onclick=function(t){
var evt=window.event || t
bx=evt.clientX;
by=evt.clientY;
var lineLength = Math.sqrt( (ax-bx)*(ax-bx)+(ay-by)*(ay-by) );
for ( i=0;i<lineLength;i++ )
{
a="<div style=\'position:absolute; top:"+Math.round( ay+(by-ay)*i/lineLength)+"px; left:"+Math.round( ax+(bx-ax)*i/lineLength)+"px;width:1px; height:1px;font-size=10;\'>.</div>"
document.body.innerHTML+=a;
}
cli="true"
chek();
}
}
if (cli==null)
{
a1();
}
/////////////////////////////////////////
function chek()
{
if (cli=="true")
{
a1();
}
if (cli=="false")
{
a2();
}}
</script>
</body>
</html>
-----------------------------------------------------------------------------------------------------------------
این کد رو امتحان کنید... می بینید که ابتدا یک نقطه بوجود میاره بعد منتظر نقطه دوم میمونه بعد میکشه
که البته بسیار با سرعت افتضاحی میکشه.
حالا شما تا اینجای کار کمک کنید تا عین نقاشی ویندوز بشه.
farcry
دوشنبه 07 شهریور 1390, 22:05 عصر
یک نمونه خط دیگه رو ببینید ولی دنبالش به هم می چسبه.
74602
با حرکت دادن موس دقیقا مکان ما رو شناسایی می کنه.
من اومدم به قسمت onmousemove عبارت زیر رو اضافه کنم تا با هر بار تکان دادن و حرکت موس قبلی پاک شه و مقدار جدید بشینه ولی کار نکرد....
document.body.innerHTML=""
__________________________________________________ __________________________________________________ ________
<html>
<body>
<script language="javascript" type="text/javascript">
var ax,ay,bx,by,a,b,sum,ccc;
/////////////////////////////////////////////////////////
document.onclick=function (e){
var evt=window.event || e
ax=evt.clientX;
ay=evt.clientY;
a="<div style=\'position:absolute; top:"+ay+"px; left:"+ax+"px; width:1px; height:1px;font-size=10;\'>.</div>"
document.body.innerHTML=a;
}
/////////////////////////////////////////////////////////
{document.onmousemove=function (t){
document.body.innerHTML=""
var evt=window.event || t
bx=evt.clientX;
by=evt.clientY;
var lineLength = Math.sqrt( (ax-bx)*(ax-bx)+(ay-by)*(ay-by) );
for ( i=0;i<lineLength;i++ )
{
b="<div style=\'position:absolute; top:"+Math.round( ay+(by-ay)*i/lineLength)+"px; left:"+Math.round( ax+(bx-ax)*i/lineLength)+"px;width:1px; height:1px;font-size=10;\'>.</div>"
sum+=b
}
document.body.innerHTML=a+sum;
}}
///////////////////////////////////////////////////////////
</script>
</body>
</html>
farcry
سه شنبه 08 شهریور 1390, 15:27 عصر
یه اشکال دیگه هم برطرف شد
اونجایی که می گیم
document.body.innerHTML=a+sum
باید مقدار sum رو پاک کنیم.... همین.
یعنی بعد اون عبارت بنویسیم
sum=""
پس دیگه این خط رو به طور کامل رسم کنید
کد کاملش رو تا فردا می نویسم.
farcry
چهارشنبه 09 شهریور 1390, 17:58 عصر
کد رو کامل کردم ... سر و تهش اینجوری شد....
ولی باز هم یه جاش اشکال داره.
وقتی می خام یه خط جدید بکشم خط قبلی پاک میشه چند تا راه به ذهنم رسید ولی هیچکدوم عملی نشدند دمتون گرم اصلاح کنید.
اشکال ما مربوط به قسمت document.body.innerHTML ها هستند.
<html>
<head>
<script language="javascript" type="text/javascript">
var ax,ay,bx,by,sum,a,b,evt,evt1,allow,cli,c;
document.onmousedown=function(r)
{
var evt=window.event || r;
ax = evt.clientX;
ay = evt.clientY;
a="<div style=\'position:absolute; top:"+ay+"px; left:"+ax+"px; width:1px; height:1px;font-size=10;\'>.</div>"
document.body.innerHTML+=a;
c=document.body.innerHTML;
allow="yes";
}
//////////////////////////////////////
document.onmouseup=function(rrr)
{
allow="no";
}
/////////////////////////////////////////////
document.onmousemove=function(rh){
if (allow=="yes")
{
var evt1=window.event || rh;
bx = evt1.clientX;
by = evt1.clientY;
var lineLength = Math.sqrt( (ax-bx)*(ax-bx)+(ay-by)*(ay-by) );
for ( i=0;i<lineLength;i++ )
{
b="<div style=\'position:absolute; top:"+Math.round( ay+(by-ay)*i/lineLength)+"px; left:"+Math.round(ax+(bx-ax)*i/lineLength)+"px;width:1px; height:1px;font-size=10;\'>.</div>"
sum+=b
}
document.body.innerHTML=a+sum;
sum="";
}
/////////////////////////////////////////////////////////////////////////
if (allow=="no")
{ }
}
</script>
</head>
<body>
</body>
</html>
بچه ها هر چی بلدین از قبیل دایره-مستطیل-سهمی-هذلولی-و.... بزارین اینجا ما هم استفاده کنیم.تشکر
farcry
چهارشنبه 09 شهریور 1390, 20:27 عصر
این هم کد دایره....
سریعترین حالتش اینه که در فانکشن دایره به جای سگمنت عدد کمتری بزاریم تا دایره با دقت کمتری
رسم بشه....
<html>
<head>
<script language="javascript" type="text/javascript">
var ax,ay,bx,by,sum,a,b,evt,evt1,allow,cli,c,c1,c2,c3;
var centerX,centerY,radius,segments,sum;
document.onmousedown=function(r)
{
var evt=window.event || r;
ax = evt.clientX;
ay = evt.clientY;
a="<div style=\'position:absolute; top:"+ay+"px; left:"+ax+"px; width:1px; height:1px;font-size=10;\'>.</div>"
document.body.innerHTML=a;
allow="yes";
}
//////////////////////////////////////
document.onmouseup=function(rrr)
{
allow="no";
}
/////////////////////////////////////////////
document.onmousemove=function(rh){
if (allow=="yes")
{
document.body.innerHTML="";
b="";
var evt1=window.event || rh;
bx = evt1.clientX;
by = evt1.clientY;
var r= Math.abs(Math.sqrt( (ax-bx)*(ax-bx)+(ay-by)*(ay-by) ) );
////////////////////////////////////////////////////////
function dayre(centerX,centerY,radius,segments){
var totalPoints=new Array();
for(var z=0;z<segments;z++){
x=centerX+radius*Math.sin(z*2*Math.PI/segments);
y=centerY+radius*Math.cos(z*2*Math.PI/segments);
totalPoints.push({'x':x,'y':y});
b="<div style=\'position:absolute; top:"+y+"px; left:"+x+"px; width:1px; height:1px;font-size=10;\'>.</div>"
document.body.innerHTML+=b;
}
}
/////////////////////////////////////////////////////////
dayre(ax,ay,r,4*r);
/////////////////////////////////////////////////////////
}
/////////////////////////////////////////////////////////////////////////
if (allow=="no")
{}
}
</script>
</head>
<body>
click kon va mouse ro bekesh
</body>
</html>
mohsen_namjoo
پنج شنبه 10 آذر 1390, 19:28 عصر
سلام.من فرامرزم و می خواهم یک برنامه رسم شکل خانه به زبان c++ بنویسم.اگه میشه کمکم کنید
sara_93
شنبه 06 خرداد 1391, 18:00 عصر
سلام ... من تا 2هفته دیگه باید یه طرحی رسم کنم ... ولی این برنامه هایی که نوشتید رو نگاه میکنم خیلی متفاوته! فکر می کنم ورژن برنامه فرق داره! من از برنامه dev استفاده میکنم!
میشه کمکم کنید توی اون برنامه چطوری بنویسم؟! حالا طرح چی باشه مهم نیست!
OMID JUVENTUSI
سه شنبه 25 آذر 1393, 19:07 عصر
سلام دوستان
من دوتا سوال دارم مربوط به c++
ممنون میشم راهنمایی کنید
1-رسم مربع تو پر با ستاره به ضلع n با استفاده از تابع display
2- به تعداد n * چاپ کن مثال n=4 با استفاده از تابع display
*
**
***
****
***
**
*
با تشکر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.