Программа, вычисляющая все конфигурации манипуляционного робота, в которых схват захватывает объект
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
nt)(240.0-link_y[i]*M);->Canvas->LineTo(px,py);
}
/* рисуем объект для захвата */->Canvas->Brush->Color = clGreen;->Canvas->Pen->Color = clGreen;->Canvas->Ellipse(x*M+319,239-y*M,x*M+321,241-y*M);->Canvas->Ellipse(x*M+318,238-y*M,x*M+322,242-y*M);
/* рисуем точки соединения звеньев */->Canvas->Brush->Color = clRed;->Canvas->Pen->Color = clRed;(i=0; i<n; i++)
{=(int)(link_x[i]*M+320.0);=(int)(240.0-link_y[i]*M);->Canvas->Ellipse(px-1,py-1,px+1,py+1);->Canvas->Ellipse(px-2,py-2,px+2,py+2);
}
/* рисуем опорную точку манипулятора */->Canvas->Brush->Color = clYellow;->Canvas->Pen->Color = clYellow;->Canvas->Ellipse(319,239,321,241);->Canvas->Ellipse(318,238,322,242);->Canvas->Ellipse(317,237,323,243);
/* подписываем график */++;->Canvas->Brush->Color = clWhite;->Canvas->Pen->Color = clBlack;(buf,"Ситуация №%d", number);->Canvas->TextOutA(15,10,buf);(i=0; i<n; i++)
{(buf,"Corner %d: %d", i+1, corner[i]);->Canvas->TextOutA(2,18*(i+1)+10,buf);
}
/* прорисовка изменений */(CSpinEdit7->Value != 0)(CSpinEdit7->Value);>ProcessMessages();
}
//---------------------------------------------------------------------------__fastcall TForm1::Button1Click(TObject *Sender)
{prec; /* величина возм. отклонения */start,end; /* ограничение на обобщение коорд.*/i, j;status;done;*f;t1, t2, t3;
/* определение начала расчетов */= Time();
/* очистка холста для рисования */->Canvas->Brush->Color = clWhite;->Canvas->FillRect(Image1->Canvas->ClipRect);>ProcessMessages();
/* получение данных о количестве звеньев */= CSpinEdit1->Value;
/* получение данных о координатах объекта */= CSpinEdit2->Value;= CSpinEdit3->Value;
/* получение даннных о возможном отклонении */= StrToFloat(Edit1->Text);
/* получение данных на ограчение на обобщение координаты */= CSpinEdit5->Value;= CSpinEdit6->Value;
/* логи... */->Lines->Add("-------------------------------------");->Lines->Add("Начало выполнения "+TimeToStr(t1));
/* первоначальная инициализация массивов данных */(i=0;i<n; i++)
{corner[i] = start;}(i=n; i<100; i++)
{corner[i] = end;}= 0;
/* сброс прогресса */->MaxValue = end - start;->Progress = 0;
/* открытие файла */= fopen ("file_out.txt", "w");
/* цикл расчета координат звеньев манипулятора */= false;(!done)
{/* рассчитываем координаты звеньев */();
/* проверяем на пересечение с преградой */= 1;(i=0; i<n;i++)
{status = status*barrier(i);}
/* сравнение координат расчетных и исходных */(fabs(link_x[n-1]-x)<prec && fabs(link_y[n-1]-y)<prec && status != 0)
{/* вывод на экран если совпало (в пределах точности) */();
/* вывод данных в файл */(f,"N %d: ", number);(i=0; i<n; i++)
{fprintf (f,"%d ",corner[i]);}(f,"\n");
}
/* меняем угол */[n-1] += CSpinEdit4->Value;
/* поворачиваем следующее звено */(i=n-1; i>=0; i--)
{if (corner[i]>end)
{if (i>0)
{corner[i-1] += CSpinEdit4->Value;(corner[i-1] > end && i == 1)
{done = true;}
};[i] = start;
}
}->Progress = corner[0] - start;
}= Time();= t2-t1;
/* логи... */->Lines->Add("Найдено "+IntToStr(number)+" ситуаций захвата"); ->Lines->Add("Окончание выполнения "+TimeToStr(t2));->Lines->Add("Длительность выполнения "+TimeToStr(t3));
}
//---------------------------------------------------------------------------__fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{((Key >= 0) && (Key <= 9)) {} // цифрыif (Key == 8) {} // <-if ((Key == .) || (Key == ,)) // запятая
Text.Pos(DecimalSeparator)!=0)//=0;//=DecimalSeparator;">{(((TEdit*)Sender)->Text.Pos(DecimalSeparator)!=0) // если запятая уже есть= 0;// если ещё нет= DecimalSeparator;
}Key = 0; // не цифра
}
//---------------------------------------------------------------------------