Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Программа построения самособирающегося материала методом фрактала, написана на языке Delphi.



 

unit ufmMain;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, ExtCtrls, StdCtrls, XPMan, Math;

 

type

TfrmMain = class(TForm)

Pages: TPageControl;

tsSierpinski: TTabSheet;

shpSierpinski: TShape;

GroupBox1: TGroupBox;

UpDown1: TUpDown;

txtSierpinskiIter: TEdit;

StaticText1: TStaticText;

cmdDrawSierpinski: TButton;

imgSierpinski: TImage;

tsKoch: TTabSheet;

shpKoch: TShape;

imgKoch: TImage;

GroupBox2: TGroupBox;

UpDown2: TUpDown;

txtKochIter: TEdit;

StaticText2: TStaticText;

cmdDrawKoch: TButton;

GroupBox3: TGroupBox;

rbKochCurve: TRadioButton;

rbKochSnowflake: TRadioButton;

rbKochKross: TRadioButton;

tsPifagorTree: TTabSheet;

shpPifagor: TShape;

imgPifagor: TImage;

GroupBox4: TGroupBox;

UpDown3: TUpDown;

txtPifagorIter: TEdit;

StaticText3: TStaticText;

cmdDrawPifagor: TButton;

GroupBox5: TGroupBox;

txtLeftAngle: TEdit;

StaticText4: TStaticText;

txtRightAngle: TEdit;

StaticText5: TStaticText;

txtStartLen: TEdit;

UpDown4: TUpDown;

StaticText6: TStaticText;

StaticText7: TStaticText;

UpDown5: TUpDown;

txtBoundLen: TEdit;

StaticText8: TStaticText;

txtDecrement: TEdit;

StaticText9: TStaticText;

txtBeginAngle: TEdit;

chkUseBoundLen: TCheckBox;

UpDown6: TUpDown;

UpDown7: TUpDown;

UpDown8: TUpDown;

procedure cmdDrawSierpinskiClick(Sender: TObject);

procedure tsSierpinskiShow(Sender: TObject);

procedure tsSierpinskiResize(Sender: TObject);

procedure cmdDrawKochClick(Sender: TObject);

procedure tsKochResize(Sender: TObject);

procedure tsKochShow(Sender: TObject);

procedure FormResize(Sender: TObject);

procedure tsPifagorTreeShow(Sender: TObject);

procedure cmdDrawPifagorClick(Sender: TObject);

procedure chkUseBoundLenClick(Sender: TObject);

procedure txtStartLenKeyPress(Sender: TObject; var Key: Char);

procedure txtBeginAngleKeyPress(Sender: TObject; var Key: Char);

procedure txtDecrementKeyPress(Sender: TObject; var Key: Char);

procedure txtKochIterKeyPress(Sender: TObject; var Key: Char);

procedure UpDown4ChangingEx(Sender: TObject; var AllowChange: Boolean;

NewValue: Smallint; Direction: TUpDownDirection);

private

{ Private declarations }

public

Bitmap: TBitmap;

LA, RA, BL, DE: Real;

procedure rotate (var x, y: Real; x0, y0, u: Real);

procedure serp_tr (x1, y1, x2, y2, x3, y3: Real);

procedure serp_draw (x1, y1, x2, y2, x3, y3: Real; n: Integer);

procedure koch_step (var x, y: Real; l, u: Real; t: Integer);

procedure koch_draw (x, y, l, u: Real; t: Integer);

procedure pif_line (x, y: Real; l, u: real);

procedure pif_draw (x, y: Real; l, u: real; t: Integer);

end;

 

var

frmMain: TfrmMain;

 

implementation

 

procedure TfrmMain.FormResize(Sender: TObject);

begin Tag := 1; end;

 

function parse (txt: string): Real;

var

p: Integer;

Code: Integer;

Value: Integer;

l, r: string;

ln, rn: Real;

begin

p := Pos('/', txt);

if p < 2 then begin

Val(txt, Value, Code);

if Code <> 0 then

parse := NaN

else parse := Value;

Exit;

end else begin

l := Copy(txt, 1, p-1);

r := Copy(txt, p+1, Length(txt)-p);

Val(l, Value, Code);

if Code <> 0 then begin

parse := NaN;

Exit;

end;

ln := Value;

Val(r, Value, Code);

if Code <> 0 then begin

parse := NaN;

Exit;

end;

rn := Value;

parse := ln/rn;

end;

 

 

end;

 

 

procedure TfrmMain.tsPifagorTreeShow(Sender: TObject);

begin

if Tag = 1 then

begin

cmdDrawPifagor.Click;

Tag := 0;

end;

end;

 

procedure TfrmMain.pif_line (x, y: Real; l, u: real);

begin

Bitmap.Canvas.MoveTo(Trunc(x), Trunc(y));

Bitmap.Canvas.LineTo(Trunc(x+l*cos(u)), Trunc(y-l*sin(u)));

end;

 

procedure TfrmMain.pif_draw (x, y: Real; l, u: real; t: Integer);

begin

if (not chkUseBoundLen.Checked) and (t = 0) then Exit;

if (l > BL) then begin

l := l * DE;

pif_line(x, y, l, u);

x := x + l * cos(u);

y := y - l * sin(u);

pif_draw(x, y, l, u + LA, t-1);

pif_draw(x, y, l, u - RA, t-1);

end;

end;

 

procedure TfrmMain.cmdDrawPifagorClick(Sender: TObject);

var

x, y: Real;

l, u: Real;

R, a: Real;

x0, y0: Real;

Code: Integer;

Value: Integer;

StartLen: Integer;

SA: Real;

begin

 

DecimalSeparator := '.';

try

DE := StrToFloat(txtDecrement.Text);

except

on EConvertError do begin

ShowMessage('Неверно введено значение!');

txtDecrement.SetFocus;

Exit;

end;

end;

 

try

SA := StrToFloat(txtBeginAngle.Text);

SA := SA / 180 * pi;

except

on EConvertError do begin

ShowMessage('Неверно введено значение!');

txtBeginAngle.SetFocus;

Exit;

end;

end;

 

try

LA := StrToFloat(txtLeftAngle.Text);

LA := LA / 180 * pi;

except

on EConvertError do begin

ShowMessage('Неверно введено значение!');

txtLeftAngle.SetFocus;

Exit;

end;

end;

 

try

RA := StrToFloat(txtRightAngle.Text);

RA := RA / 180 * pi;

except

on EConvertError do begin

ShowMessage('Неверно введено значение!');

txtRightAngle.SetFocus;

Exit;

end;

end;

 

Val(txtStartLen.Text, StartLen, Code);

Val(txtBoundLen.Text, BL, Code);

if (not chkUseBoundLen.Checked) then

BL := 0

else begin

if BL = 0 then BL := 0.1;

end;

Val(txtPifagorIter.Text, Value, Code);

Bitmap := TBitmap.Create;

Bitmap.Width := imgPifagor.Width;

Bitmap.Height := imgPifagor.Height;

 

x := Bitmap.Width/2 - 1;

y := Bitmap.Height - 1;

pif_draw(x, y, StartLen, SA, Value);

 

imgPifagor.Picture.Bitmap.Assign(Bitmap);

Bitmap.Destroy;

 

end;

 

procedure TfrmMain.chkUseBoundLenClick(Sender: TObject);

begin

StaticText7.Enabled := not StaticText7.Enabled;

txtBoundLen.Enabled := not txtBoundLen.Enabled;

StaticText3.Enabled := not StaticText3.Enabled;

txtPifagorIter.Enabled := not txtPifagorIter.Enabled;

UpDown3.Enabled := not UpDown3.Enabled;

UpDown5.Enabled := not UpDown5.Enabled;

cmdDrawPifagor.Click;

end;

 

{$R *.dfm}

 

end.

 

Приложение № 2.

Расчёт количества исходного -рефрактивного материала для защиты от -излучения.

 

Рассчитаем количество вещества, необходимого для расчёта всей атомной станции при мощности излучения ~ 50 мкР/час.

Каркасом является полусфера, радиусом 200метров, структура – сетка с размером ячейки 1 дм.

Площадь полусферы м2 = 25*106 дм2

Если ширина прута ~ 1 см, то площадь поверхности прута

 

дм2

 

Количество прутьев при этом 4000

 

дм2 =5*104 м2

Если площадь м2, то моль, а при необходимой толщине – не более 100 нм,

 

моль.

 

Если кг, то общая масса вещества кг

 

 

 

Рис.17 Построение каркаса для II уровня защиты

 

Приложение № 3

Расчёт скорости роста интеллектуального материала под действием излучения.

 

Будем считать, что опасной для жизни является излучение мощностью мкР/час. При этом в 1см3 образуется 105 пар ионов на расстояние 1м от элемента 1г.

При повреждение ядерного реактора количество ионов возрастает в 103 104 раз. Таким образом, в 1см3 образуется ~109 пар ионов/час.

Если толщину слоя уменьшиться с 1см до 100нМ, то есть в 105 раз, то можно считать, что на поверхности нанослоя будет ионизироваться 1014 молекул/час.

Если площадь поверхности 1 молекулы ~10-20 м2, то

 

М2 =1 мм2

 

Таким образом за 1 час образуется защитный слой площадью не менее 1 мм2

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

Можно предположить, что закон роста аналогичен закону радиоактивного распада с противоположным знаком и будет иметь вид экспоненты.

 

,где

N – количество выросших молекул.

P – мощность - излучения,

N0 – количество исходных молекул.

 

Следовательно, можно определить, что поверхность S = 1см2 = 100 мм2 образуется уже не за 100 часов, а в соответствии с законом логарифмической функции то есть за 20 часов.

Если S=1 дм2 =104 мм2 ,то

 

=40 часов, N

 

то есть менее 2-х суток

 

Рис.18 Закон роста атомов при самосборке t

Список литературы.

 

1. Ионизирующие излучении БСЭ, т.3, М. 1985

2. А.Т.Глазунов, О.Ф.Кабардин, А.Н.Малинин и др.; под редакцией Пинского А.А. «Физика», учебник для 11 классов школ с углублённым изучением физики. М., «Просвещение», 2003.

3. Энциклопедия «Современное Естествознание», том 10, «Современные технологии». М., «Магистр пресс», 2000 год.

4. О.Ф.Орлов, О.Ф.Кабардин, Э.Е.Эвенчик и др.; под редакцией Пинского А.А. «Физика», учебник для 10 классов школ с углублённым изучением физики. М., «Просвещение», 2005.

5. Ю. Головин. Нанотехнологии на службе человека. Ж. «Квант» № 4 2005 г.

6. Ж.Алферов

7. М. Ратнер, Д. Ратнер «Нанотехнологии. Простое объяснение гениальной идеи». М. «Вильямс», 2004.

8. Энциклопедия «Современное Естествознание», том 3, «Математика. Механика». М., «Магистр пресс», 2000 год.

9. Ю. Альтман «Военные нанотехнологии. Возможности применения и превентивного контроля вооружений». М., «Техносфера», 2006 год.

10. http://www.nanometer.ru – Нанотехнологии. Нанотехнологическое общество.

11. http://ru.wikipeia.org – Википедия. Свободная энциклопедия.

 

 

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.