Программа, вычисляющая все конфигурации манипуляционного робота, в которых схват захватывает объект

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

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; // не цифра

}

//---------------------------------------------------------------------------