papierkorb:poly.blk
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| papierkorb:poly.blk [2025-08-16 17:50] – ↷ Seite von projects:poly.blk nach papierkorb:poly.blk verschoben mka | papierkorb:poly.blk [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | === Polynomial properties application === | ||
| - | < | ||
| - | Screen 0 not modified | ||
| - | | ||
| - | 1 \ Last change: | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 10 | ||
| - | 11 | ||
| - | 12 | ||
| - | 13 | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | |||
| - | |||
| - | Screen 2 not modified | ||
| - | 0 EXIT Distance between two points. | ||
| - | | ||
| - | 2 Y | ||
| - | 3 | | ||
| - | 4 | /| p2 = ( x2,y2 ) | ||
| - | 5 | / | | ||
| - | 6 | | ||
| - | 7 | / | ||
| - | 8 | / | | ||
| - | 9 | / | ||
| - | 10 | p1 -------- | ||
| - | 11 |----------------X | ||
| - | 12 | ||
| - | 13 | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 3 not modified | ||
| - | 0 EXIT Area of a polygon. | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 6 p5 / | ||
| - | | ||
| - | 8 AREA OF THE POLYGON = | ||
| - | 9 [(x1y5-x5y1)+(x2y1-x1y2)+(x3y2-x2y3)+(x4y3-x3y4)+(x5y4-x4y5)]/ | ||
| - | 10 | ||
| - | 11 In general: | ||
| - | 12 i=n | ||
| - | 13 AREA = 0.5*SUM [ x(i)y(i-1) - x(i-1)y(i) ] | ||
| - | 14 i=1 | ||
| - | 15 where we define x0 to be x5 and y0 to be y5. | ||
| - | |||
| - | |||
| - | Screen 4 not modified | ||
| - | 0 EXIT | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 10 | ||
| - | 11 | ||
| - | 12 A = [(8*4-5*4)+(6*4-8*1)+(2*1-6*1)+(5*1-2*4)]/ | ||
| - | 13 | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 5 not modified | ||
| - | 0 \ Polygon Area - 1 | ||
| - | 1 : #IN ( -- n ) | ||
| - | | ||
| - | 3 CREATE X 102 ALLOT \ Array for x coordinates | ||
| - | 4 CREATE Y 102 ALLOT \ Array for y coordinates | ||
| - | 5 VARIABLE | ||
| - | 6 VARIABLE | ||
| - | 7 \ Fetch ith x component. | ||
| - | 8 : X@ ( i x{i} ) 2* X + @ ; | ||
| - | 9 \ Fetch ith y component. | ||
| - | 10 : Y@ ( i y{i} ) 2* Y + @ ; | ||
| - | 11 \ Store ith x component. | ||
| - | 12 : X! ( x i -- ) 2* X + ! ; | ||
| - | 13 \ Store ith y component. | ||
| - | 14 : Y! ( y i -- ) 2* Y + ! ; | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 6 not modified | ||
| - | 0 \ Polygon area - 2 | ||
| - | 1 \ Move to the next tab stop. | ||
| - | 2 : TAB ( -- -- ) | ||
| - | | ||
| - | | ||
| - | | ||
| - | 6 \ Get number from keyboard. | ||
| - | 7 : GET# ( -- n ) | ||
| - | | ||
| - | 9 \ Prompt and fetch number of data points. | ||
| - | 10 : GET_# | ||
| - | 11 | ||
| - | 12 CR ." Enter number of data points. " | ||
| - | 13 | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 7 not modified | ||
| - | 0 \ Polygon area - 3 | ||
| - | 1 \ Prompt and fetch all data points. | ||
| - | 2 : GET_DATA | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 8 \ Sum data points. | ||
| - | 9 : FIND_AREA | ||
| - | 10 0 AREA ! | ||
| - | 11 # | ||
| - | 12 DO I X@ I 1- Y@ * ( X{i}*Y{i-1} ) | ||
| - | 13 I 1- X@ I Y@ * ( X{i-1}*Y{i} ) | ||
| - | 14 - AREA +! | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 8 not modified | ||
| - | 0 \ Polygon area - 4 | ||
| - | 1 \ Display computed area. | ||
| - | 2 : PUT_AREA | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 7 \ Compute area of polygon. | ||
| - | 8 : POLY ( -- -- ) | ||
| - | | ||
| - | 10 | ||
| - | 11 | ||
| - | 12 | ||
| - | 13 | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 9 not modified | ||
| - | 0 \ Load screen for enhanced POLY program. | ||
| - | | ||
| - | | ||
| - | | ||
| - | 4 : PTASK ; | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 10 | ||
| - | 11 | ||
| - | 12 | ||
| - | 13 | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 10 not modified | ||
| - | 0 \ 32 bit square root KS 4TH DIM V4N1P9 | ||
| - | | ||
| - | 2 : EASY-BITS ( drem1 partial.root1 count | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 9 : 2' | ||
| - | 10 >R D2* DUP 0< | ||
| - | 11 IF | ||
| - | 12 ELSE D2* R@ 2DUP U< | ||
| - | 13 | ||
| - | 14 | ||
| - | 15 THEN THEN ; | ||
| - | |||
| - | |||
| - | Screen 11 not modified | ||
| - | 0 \ 32 bit square root KS 4TH DIM V4N1P9 | ||
| - | 1 : 1' | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 6 \ 32-bit unsigned radicand to 16-bit unsigned square root | ||
| - | 7 : SQRT ( ud | ||
| - | | ||
| - | | ||
| - | 10 | ||
| - | 11 \ Display 16-bit number with two decimal places. | ||
| - | 12 : I.XX ( 100*n -- ) | ||
| - | 13 0 <# # # ASCII . HOLD #S #> | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 12 not modified | ||
| - | 0 \ Support for bullet proof #IN | ||
| - | 1 : BELL ( -- -- ) 7 EMIT -1 #OUT +! ; | ||
| - | 2 : DIGIT? | ||
| - | | ||
| - | 4 : RUBOUT | ||
| - | | ||
| - | 6 \ Remove digit from screen and number then dec digit count. | ||
| - | 7 : -DIGIT | ||
| - | | ||
| - | 9 \ Increment digit count and add in digit. | ||
| - | 10 : +DIGIT | ||
| - | 11 SWAP 10 UM* 2 PICK 48 - 0 D+ 32767. 2OVER DU< | ||
| - | 12 | ||
| - | 13 ELSE DROP SWAP EMIT SWAP 1+ SWAP THEN ; | ||
| - | 14 : RESET? | ||
| - | 15 OVER 0= IF ROT DROP FALSE -ROT THEN ; | ||
| - | |||
| - | |||
| - | Screen 13 not modified | ||
| - | 0 \ Support for bullet proof #IN | ||
| - | 1 \ Correct an error input. | ||
| - | 2 : CORRECT.IT ( flg cnt num key flg cnt num ) | ||
| - | | ||
| - | | ||
| - | | ||
| - | 6 \ Process all other keystrokes. | ||
| - | 7 : PROCESS.IT ( flg cnt num key flg cnt num ) | ||
| - | | ||
| - | | ||
| - | 10 ELSE DROP BELL THEN ; \ Invalid key or overflow. | ||
| - | 11 \ Apply sign to number. | ||
| - | 12 : APPLY-SIGN | ||
| - | 13 DROP NIP SWAP \ Drop key, nip cnt, get flg. | ||
| - | 14 IF NEGATE THEN ; \ Apply sign to number. | ||
| - | 15 : NEGATIVE? ASCII - = 3 PICK 0= AND ; \ Negative number? | ||
| - | |||
| - | |||
| - | Screen 14 not modified | ||
| - | 0 \ Bullet proof #IN | ||
| - | 1 : SET-FLAG | ||
| - | | ||
| - | | ||
| - | 4 : #IN ( -- num ) \ flg=sign flag | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 10 IF APPLY-SIGN EXIT THEN \ Apply sign to number & exit | ||
| - | 11 DUP CONTROL H = \ Correct error input? | ||
| - | 12 IF | ||
| - | 13 ELSE PROCESS.IT | ||
| - | 14 THEN AGAIN ; | ||
| - | 15 \ : TEST BEGIN CR #IN 3 SPACES DUP . 0= UNTIL ; | ||
| - | |||
| - | |||
| - | Screen 15 not modified | ||
| - | 0 \ Polygon Area & Perimeter | ||
| - | 1 CREATE X 102 ALLOT \ Array for x coordinates | ||
| - | 2 CREATE Y 102 ALLOT \ Array for y coordinates | ||
| - | 3 VARIABLE | ||
| - | 4 VARIABLE | ||
| - | 5 VARIABLE | ||
| - | | ||
| - | 7 \ Fetch ith x component. | ||
| - | 8 : X@ ( i x{i} ) 2* X + @ ; | ||
| - | 9 \ Fetch ith y component. | ||
| - | 10 : Y@ ( i y{i} ) 2* Y + @ ; | ||
| - | 11 \ Store ith x component. | ||
| - | 12 : X! ( x i -- ) 2* X + ! ; | ||
| - | 13 \ Store ith y component. | ||
| - | 14 : Y! ( y i -- ) 2* Y + ! ; | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 16 not modified | ||
| - | 0 \ Polygon Area & Perimeter - 2 | ||
| - | 1 \ Move to the next tab stop. | ||
| - | 2 : TAB ( -- -- ) | ||
| - | | ||
| - | | ||
| - | | ||
| - | 6 \ Get number from keyboard. | ||
| - | 7 : GET# ( -- n ) | ||
| - | | ||
| - | 9 \ Prompt and fetch number of data points. | ||
| - | 10 : GET_# | ||
| - | 11 | ||
| - | 12 CR ." Enter number of data points. " | ||
| - | 13 | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 17 not modified | ||
| - | 0 \ Polygon Area & Perimeter -3 13: | ||
| - | 1 \ Prompt and fetch all data points. | ||
| - | 2 : GET_DATA | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 8 \ Sum data points. | ||
| - | 9 : FIND_AREA | ||
| - | 10 0 AREA ! | ||
| - | 11 # | ||
| - | 12 DO I X@ I 1- Y@ * ( X{i}*Y{i-1} ) | ||
| - | 13 I 1- X@ I Y@ * ( X{i-1}*Y{i} ) | ||
| - | 14 - AREA +! | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 18 not modified | ||
| - | 0 \ Polygon Area & Perimeter - 4 | ||
| - | | ||
| - | 2 : DIST ( x2 y2 x1 y1 100*d ) | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | 7 : FIND_PERIMETER ( -- -- ) | ||
| - | | ||
| - | | ||
| - | 10 | ||
| - | 11 I 1- X@ I 1- Y@ | ||
| - | 12 DIST PERIMETER +! | ||
| - | 13 LOOP ; | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | |||
| - | Screen 19 not modified | ||
| - | 0 \ Polygon Area & Perimeter - 6 | ||
| - | 1 \ Display computed area. | ||
| - | 2 : PUT_AREA | ||
| - | | ||
| - | | ||
| - | | ||
| - | 6 \ Display computed perimeter. | ||
| - | 7 : PUT_PERIMETER ( -- -- ) | ||
| - | | ||
| - | | ||
| - | 10 | ||
| - | 11 \ Compute area of polygon. | ||
| - | 12 : POLY ( -- -- ) | ||
| - | 13 | ||
| - | 14 | ||
| - | 15 | ||
| - | |||
| - | </ | ||
papierkorb/poly.blk.1755359401.txt.gz · Zuletzt geändert: 2025-08-16 17:50 von mka