Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2011, 23:52   #1
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
Вопрос Вывод фигуры по координатам под углом. Работа с текстовым файлом. Delphi.

Здравствуйте! У меня возникла проблема, порошу помощи.
Суть задания таково: Есть текстовый файл некий 17000.TXT из него нужно достать координаты точек и нарисовать на канвасе поду углом, относительно оси ОY, который в свою очередь вводиться с клавиатуры, ну и координаты вывести в стринггрид. Я написал программу, которая просто считывает, рисует и выводит координаты stringgrid. Но вот как сделать под углом я не знаю пока. Подскажите пожалуйста как.

Вот мой код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  Point = record
    X, Y: Real;
  end;

var
  Form1: TForm1;
    f:textfile;
    PCount: Integer;
    Points: array of Point;
    ErrorCode: Integer;

implementation

{$R *.dfm}

function Get(S: String): Point;
var
  I: Integer;
  T: String;
begin
  T:= '';
   For I:= 8 to 12 do
      T:= T + S[I];
  Val( T, Result.X, ErrorCode);
  T:= '';
   For I:= 13 to 17 do
      T:= T + S[I];
  Val( T, Result.Y, ErrorCode);
end;

Const
    Scale = 25;

procedure TForm1.Button1Click(Sender: TObject);
 var
  ID, I: Integer;
  TC: Char;
  TS: String;
begin
  Assignfile(f, '17000.txt');
  Reset(f);
  ID:= 0;
   While ID <> 16 do
     begin
         Read(F, TC);
         if TC = '&' then Inc(ID);
     end;
  ReadLn(F, TS);
  Read(F, TC);
  ReadLn(F, TS);
  Val(TS, PCOunt, ErrorCode);
  SetLength(Points, PCount);
  StringGrid1.RowCount:= PCount;
    For I:= 0 to PCount - 1 do
       begin
           ReadLn(F, TS);
           Points[I]:= Get(TS);
           StringGrid1.Cells[0, I+1]:= FloatToStrF(Points[I].X,FFfixed,4,2);
           StringGrid1.Cells[1, I+1]:= FloatToStrF(Points[I].y,FFfixed,4,2);
       end;
  Canvas.MoveTo(Round(Points[0].X * Scale), Round(Points[0].Y * Scale));
    For I:= 1 to PCount - 1 do
       begin
           Canvas.LineTo(Round(Points[I].X * Scale), Round(Points[I].Y * Scale));
       end;
  CloseFile(f);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  StringGrid1.Cells[0,0]:='      Y';
  StringGrid1.Cells[1,0]:='      X';
end;

end.
Прилагаеться текстовый файл, и проект целиком. Заранее спасибо.
Вложения
Тип файла: txt 17000.TXT (13.9 Кб, 139 просмотров)
Тип файла: rar sr.rar (193.3 Кб, 15 просмотров)
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Старый 29.03.2011, 10:18   #2
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

смотри, у тебя есть вектор - ноль координат и первая точка(с остальными аналогично).
Ты берёшь координаты по х и по у как косинус и синус угла вектора, длина естественно равна еденице(по пифагору посчитаешь ). В общем нашёл ты по синусу настоящий угол, добавляешь к нему необходимый тебе и снова берёшь из этого значения синус и косинус - вот тебе новые координаты первой точки.
В голове вроде всё складывается - как будто должно сработать.

Последний раз редактировалось BoozZzilla; 29.03.2011 в 10:55.
BoozZzilla вне форума Ответить с цитированием
Старый 05.04.2011, 18:30   #3
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию

Можете пожалуйста поподробнее? на примере если можно, у меня не выходит..
Учусь учиться.
Wild_klas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстовым файлом в Delphi Potemkin_42 Помощь студентам 10 11.01.2011 12:39
Работа с текстовым файлом Vasya Помощь студентам 28 24.01.2008 01:15
Работа с текстовым файлом (delphi). Помогите доделать программу. Snord Помощь студентам 1 14.12.2007 14:10