Вверх ↑
Этот топик читают: Гость
Ответов: 1341
Рейтинг: 31
#1: 2021-02-16 15:05:19 ЛС | профиль | цитата
График первый

v1.jpg

соответствует изменению градусов поворота картинки в трансформации по формуле (arcsin(%1))*(360/pi) (диапазон подаваемых значений от +1 до -1)

График второй

v2.jpg

при подаче значений от 0 до -1, далее до 0, до +1, до 0, .... не понятно как это изложить вобщем, примеры ниже


Add(MainForm,2953706,21,105)
{
Width=841
Height=451
}
Add(LineBreakEx,16505516,1162,301)
{
Caption="bmp1"
Type=2
}
Add(Img_SetTransform,10774283,1008,343)
{
Point2=26214800
link(onResetTransform,730880:doDraw,[])
link(Bitmap,4929607:getVar,[])
link(Transform,3364027:Transform,[(1035,324)(1063,324)])
}
Add(LineBreakEx,4929607,1008,280)
{
Caption="bmp1"
Type=2
}
Add(Img_UseRotate,15911165,1057,217)
{
Angle=0
link(Angle,5966989:Var2,[])
}
Add(PaintBox,16296757,861,343)
{
Left=425
Top=5
Width=400
Height=400
Color=0
Enabled=1
ClearBeforeDraw=0
Point(MouseX)
Point(MouseY)
Point(onMouseMove)
Point(onMouseDown)
Point(Handle)
link(onBeforeDraw,12903508:doEvent1,[])
}
Add(LineBreakEx,2483627,861,392)
{
Caption="bmp1"
Type=3
link(_Data,16296757:Bitmap,[])
}
Add(Hub,12903508,903,343)
{
link(onEvent1,7645734:doSetTransform,[(977,349)(977,482)])
link(onEvent2,7645734:doResetTransform,[(968,356)(968,489)])
}
Add(Img_Text,623198,1078,476)
{
X=-3
Y=-200
Font=[MS Sans Serif,12,1,65280,1]
Text="S"
Point(X)
Point(Y)
link(onDraw,11957536:doDraw,[])
link(Bitmap,6789622:Var2,[])
}
Add(Img_SetTransform,7645734,1036,476)
{
Point2=26214800
link(onSetTransform,623198:doDraw,[])
link(onResetTransform,10774283:doResetTransform,[(1259,489)(1259,513)(996,513)(996,356)])
link(Bitmap,7483217:Var2,[])
link(Transform,8859586:Transform,[(1063,414)(1119,414)])
}
Add(LineBreakEx,14303955,1036,385)
{
Caption="bmp1"
Type=2
}
Add(Img_UseRotate,8859586,1113,371)
{
Angle=0
link(Angle,5966989:Var3,[(1126,201)])
}
Add(GetDataEx,5966989,1064,196)
{
link(Data,4938931:Result,[])
}
Add(Img_Text,11957536,1120,476)
{
X=-3
Y=178
Font=[MS Sans Serif,12,1,65280,1]
Text="N"
Point(X)
Point(Y)
link(onDraw,5046922:doDraw,[])
link(Bitmap,6487349:Var2,[])
}
Add(Img_Text,5046922,1162,476)
{
X=180
Y=-11
Font=[MS Sans Serif,12,1,65280,1]
Text="W"
Point(X)
Point(Y)
link(onDraw,11358778:doDraw,[])
link(Bitmap,9929604:Var2,[])
}
Add(Img_Text,11358778,1204,476)
{
X=-197
Y=-10
Font=[MS Sans Serif,12,1,65280,1]
Text="E"
Point(X)
Point(Y)
link(onDraw,10774283:doSetTransform,[(1267,482)(1267,523)(990,523)(990,349)])
link(Bitmap,9929604:Var3,[(1210,460)])
}
Add(GetDataEx,7483217,1036,455)
{
link(Data,14303955:getVar,[])
}
Add(GetDataEx,6789622,1078,455)
{
Angle=3
link(Data,7483217:Var3,[])
}
Add(GetDataEx,6487349,1120,455)
{
Angle=3
link(Data,6789622:Var3,[])
}
Add(GetDataEx,9929604,1162,455)
{
Angle=3
link(Data,6487349:Var3,[])
}
Add(MathParse,6000041,1015,147)
{
DataCount=1
MathStr="(arcsin(%1))*(360/pi)"
link(onResult,4938931:doOperation,[])
}
Add(Img_UseRotate,3364027,1057,266)
{
Angle=0
link(AddTransform,15911165:Transform,[])
}
Add(Math,4938931,1064,147)
{
OpType=37
Op2=0.0001
}
Add(Img_Bmp,730880,1211,350)
{
X=196
Y=197
Transparent=0
TransparentColor=16777215
link(Bitmap,16505516:getVar,[(1217,332)(1168,332)])
link(SourceBitmap,14559879:Bitmap,[])
}
Add(Bitmap,14559879,1218,301)
{
Picture=[424D9600000000000000360000002800000007000000040000000100180000000000600000000000000000000000000000000000000000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FFFFFF00FF0000FF0000FF0000FF0000FF00FFFFFF000000FFFFFFFFFFFF00FF0000FF0000FF00FFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFF000000]
}
Add(StrList,10802567,917,63)
{
Strings=#19:0.01490552257746458|19:0.03140690177679062|19:0.04377724602818489|19:0.05614150688052177|19:0.09317431598901749|17:0.121891051530838|18:0.1382562965154648|17:0.158660039305687|18:0.1952097713947296|18:0.2274743616580963|18:0.2475163191556931|18:0.2674525678157806|18:0.3109005689620972|18:0.3421017825603485|18:0.3690982162952423|18:0.3957866132259369|18:0.4296122491359711|18:0.4664992094039917|18:0.4846482872962952|18:0.5167919397354126|18:0.5447670817375183|18:0.5922775268554688|17:0.618549108505249|18:0.6378117203712463|18:0.6751526594161987|18:0.7020772099494934|17:0.728033185005188|18:0.7556945085525513|18:0.7820693850517273|18:0.8071122765541077|18:0.8214809894561768|18:0.8353462815284729|18:0.8656930923461914|18:0.8875155448913574|18:0.9057688117027283|18:0.9159822463989258|18:0.9376199841499329|18:0.9596825838088989|18:0.9652773141860962|18:0.9752320647239685|18:0.9827721118927002|18:0.9889568686485291|18:0.9942288994789124|18:0.9972280859947205|18:0.9991406202316284|18:0.9997913241386414|18:0.9991569519042969|18:0.9962648749351502|18:0.9902017712593079|18:0.9788312315940857|18:0.9695549011230469|18:0.9597941637039185|18:0.9447235465049744|18:0.9303937554359436|18:0.9144799709320068|18:0.9041826128959656|18:0.8740315437316895|16:0.85108482837677|18:0.8400717973709106|18:0.8097766041755676|18:0.7899696826934815|18:0.7339394092559815|18:0.6994200944900513|18:0.6784864068031311|18:0.6412937641143799|18:0.5959213972091675|18:0.5724802017211914|18:0.5381685495376587|18:0.4777691960334778|17:0.429979532957077|17:0.388569712638855|18:0.3308295905590057|18:0.3034371435642242|18:0.2479148954153061|18:0.2198323458433151|18:0.1956146955490112|18:0.1468342393636704|18:0.0771404504776001|19:0.04006853327155113|21:-0.001185912173241377|20:-0.06304129958152771|19:-0.1491802334785461|19:-0.1695494502782822|19:-0.2181219458580017|19:-0.2621805667877197|19:-0.3135458827018738|19:-0.3601638674736023|19:-0.3831478357315064|19:-0.4209268689155579|19:-0.4725989699363709|18:-0.508551836013794|19:-0.5574177503585815|19:-0.5778008699417114|19:-0.6174905896186829|19:-0.6462699770927429|19:-0.6711045503616333|18:-0.698168933391571|19:-0.7355517148971558|19:-0.7786455154418945|19:-0.7964423894882202|19:-0.8207108974456787|19:-0.8650162220001221|19:-0.8791464567184448|19:-0.9016566872596741|19:-0.9235469102859497|19:-0.9454998970031738|19:-0.9604583978652954|19:-0.9730623960494995|19:-0.9868284463882446|19:-0.9905308485031128|19:-0.9940828084945679|19:-0.9961121678352356|18:-0.999754011631012|19:-0.9973567724227905|19:-0.9967231154441834|19:-0.9948422908782959|19:-0.9892147779464722|19:-0.9830941557884216|19:-0.9747037887573242|19:-0.9624462127685547|19:-0.9438104629516602|19:-0.9231539964675903|19:-0.9099623560905457|19:-0.8976057171821594|19:-0.8786569237709045|19:-0.8408030867576599|19:-0.8224772810935974|19:-0.8032556772232056|19:-0.7701625227928162|19:-0.7292314767837524|19:-0.7003824710845947|19:-0.6855074167251587|19:-0.6548885107040405|19:-0.6263760924339294|19:-0.6134243607521057|19:-0.5836774706840515|19:-0.5668009519577026|19:-0.5218108892440796|19:-0.4933696091175079|19:-0.4825649857521057|19:-0.4680432677268982|19:-0.4497124254703522|19:-0.4311894774436951|19:-0.4274629950523377|19:-0.4162389636039734|19:-0.3973911106586456|19:-0.3860012888908386|19:-0.3707224130630493|19:-0.3553417325019836|19:-0.3398650884628296|19:-0.3242964148521423|19:-0.3164781332015991|19:-0.3047109842300415|19:-0.2810385823249817|18:-0.265160083770752|19:-0.2532036304473877|19:-0.2452113926410675|18:-0.225157767534256|19:-0.2130790948867798|19:-0.1928766071796417|19:-0.1725922226905823|19:-0.1563109904527664|19:-0.1481539607048035|19:-0.1440718322992325|19:-0.1359005123376846|19:-0.1318109780550003|19:-0.1277193874120712|19:-0.1236257255077362|19:-0.1195295751094818|19:-0.1154321506619453|19:-0.1031266897916794|20:-0.09080597758293152|20:-0.07024119049310684|20:-0.06200617179274559|20:-0.05376679822802544|20:-0.04552451148629189|20:-0.03727846965193749|19:-0.0166536308825016|21:-0.008401742205023766|
}
Add(ArrayRW,15854617,931,147)
{
link(onRead,6000041:doCalc,[])
link(Array,10802567:Array,[])
}
Add(CounterEx,5130055,875,147)
{
Max=179
link(onNext,15854617:doRead,[])
}
Add(Timer,14021328,812,147)
{
Interval=25
link(onTimer,5130055:doNext,[])
}
Add(Timer,10374832,812,343)
{
Interval=1
link(onTimer,16296757:doRefresh,[])
}
Add(LineBreakEx,16053527,504,301)
{
Caption="bmp2"
Type=2
}
Add(Img_SetTransform,13929519,350,343)
{
Point2=26214800
link(onResetTransform,9202940:doDraw,[])
link(Bitmap,10519306:getVar,[])
link(Transform,8678998:Transform,[(377,324)(405,324)])
}
Add(LineBreakEx,10519306,350,280)
{
Caption="bmp2"
Type=2
}
Add(Img_UseRotate,10614339,399,217)
{
Angle=0
link(Angle,8534036:Var2,[])
}
Add(PaintBox,6499108,203,343)
{
Left=5
Top=5
Width=400
Height=400
Color=0
Enabled=1
ClearBeforeDraw=0
Point(MouseX)
Point(MouseY)
Point(onMouseMove)
Point(onMouseDown)
Point(Handle)
link(onBeforeDraw,9171880:doEvent1,[])
}
Add(LineBreakEx,2100063,203,392)
{
Caption="bmp2"
Type=3
link(_Data,6499108:Bitmap,[])
}
Add(Hub,9171880,245,343)
{
link(onEvent1,10761467:doSetTransform,[(319,349)(319,482)])
link(onEvent2,10761467:doResetTransform,[(310,356)(310,489)])
}
Add(Img_Text,2076875,420,476)
{
X=-3
Y=-200
Font=[MS Sans Serif,12,1,65280,1]
Text="S"
Point(X)
Point(Y)
link(onDraw,16442264:doDraw,[])
link(Bitmap,5254712:Var2,[])
}
Add(Img_SetTransform,10761467,378,476)
{
Point2=26214800
link(onSetTransform,2076875:doDraw,[])
link(onResetTransform,13929519:doResetTransform,[(601,489)(601,513)(338,513)(338,356)])
link(Bitmap,1763114:Var2,[])
link(Transform,15789319:Transform,[(405,414)(461,414)])
}
Add(LineBreakEx,1046146,378,385)
{
Caption="bmp2"
Type=2
}
Add(Img_UseRotate,15789319,455,371)
{
Angle=0
link(Angle,8534036:Var3,[(468,201)])
}
Add(GetDataEx,8534036,406,196)
{
link(Data,7821590:Result,[])
}
Add(Img_Text,16442264,462,476)
{
X=-3
Y=178
Font=[MS Sans Serif,12,1,65280,1]
Text="N"
Point(X)
Point(Y)
link(onDraw,9720452:doDraw,[])
link(Bitmap,9757585:Var2,[])
}
Add(Img_Text,9720452,504,476)
{
X=180
Y=-11
Font=[MS Sans Serif,12,1,65280,1]
Text="W"
Point(X)
Point(Y)
link(onDraw,6895554:doDraw,[])
link(Bitmap,153781:Var2,[])
}
Add(Img_Text,6895554,546,476)
{
X=-197
Y=-10
Font=[MS Sans Serif,12,1,65280,1]
Text="E"
Point(X)
Point(Y)
link(onDraw,13929519:doSetTransform,[(609,482)(609,523)(332,523)(332,349)])
link(Bitmap,153781:Var3,[(552,460)])
}
Add(GetDataEx,1763114,378,455)
{
link(Data,1046146:getVar,[])
}
Add(GetDataEx,5254712,420,455)
{
Angle=3
link(Data,1763114:Var3,[])
}
Add(GetDataEx,9757585,462,455)
{
Angle=3
link(Data,5254712:Var3,[])
}
Add(GetDataEx,153781,504,455)
{
Angle=3
link(Data,9757585:Var3,[])
}
Add(MathParse,9356890,357,147)
{
DataCount=1
MathStr="(arcsin(%1))*(360/pi)"
link(onResult,7821590:doOperation,[])
}
Add(Img_UseRotate,8678998,399,266)
{
Angle=0
link(AddTransform,10614339:Transform,[])
}
Add(Math,7821590,406,147)
{
OpType=37
Op2=0.0001
}
Add(Img_Bmp,9202940,553,350)
{
X=196
Y=197
Transparent=0
TransparentColor=16777215
link(Bitmap,16053527:getVar,[(559,332)(510,332)])
link(SourceBitmap,13686574:Bitmap,[])
}
Add(Bitmap,13686574,560,301)
{
Picture=[424D9600000000000000360000002800000007000000040000000100180000000000600000000000000000000000000000000000000000FF0000FF0000FF0000FF0000FF0000FF0000FF00000000FFFFFF00FF0000FF0000FF0000FF0000FF00FFFFFF000000FFFFFFFFFFFF00FF0000FF0000FF00FFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFF000000]
}
Add(StrList,8575918,259,63)
{
Strings=#18:0.9961947202682495|18:0.9961942434310913|18:0.9961928129196167|18:0.9961903691291809|18:0.9961827397346497|18:0.9961366653442383|18:0.9961135983467102|18:0.9961135983467102|18:0.9961135983467102|18:0.9961135983467102|18:0.9960867166519165|18:0.9960391521453857|18:0.9960718154907227|18:0.9960391521453857|18:0.9960213899612427|18:0.9959830641746521|18:0.9959182143211365|17:0.999722421169281|18:0.9957910180091858|18:0.9955375790596008|18:0.9951790571212769|18:0.9947951436042786|18:0.9944669604301453|18:0.9941042065620422|17:0.993707001209259|18:0.9932753443717957|18:0.9924792647361755|18:0.9921340346336365|18:0.9915875792503357|18:0.9897417426109314|17:0.989057719707489|18:0.9883394241333008|18:0.9874580502510071|18:0.9866654872894287|18:0.9855554699897766|18:0.9845342636108398|17:0.983310341835022|18:0.9823525547981262|18:0.9808520078659058|18:0.9796319007873535|17:0.978732168674469|18:0.9770531058311462|18:0.9758913516998291|18:0.9748973846435547|18:0.9732581377029419|18:0.9748342037200928|18:0.9691245555877686|18:0.9658628702163696|18:0.9629218578338623|18:0.9619118571281433|18:0.9603689908981323|18:0.9585268497467041|18:0.9605671167373657|18:0.9549857378005981|18:0.9572248458862305|18:0.9515789747238159|18:0.9498260021209717|18:0.9486390352249146|17:0.947134792804718|18:0.9452995657920837|18:0.9434314966201782|18:0.9405681490898132|18:0.9376312494277954|18:0.9356327056884766|18:0.9322296380996704|18:0.9357905983924866|18:0.9294424653053284|18:0.9265979528427124|18:0.9251543283462524|18:0.9222241044044495|18:0.9199891686439514|18:0.9181023240089417|17:0.915423572063446|18:0.9127016067504883|18:0.9107308983802795|17:0.909138560295105|18:0.9067237973213196|18:0.9038667678833008|18:0.9009671211242676|18:0.8984477519989014|16:0.89417964220047|18:0.8920132517814636|18:0.8954205513000488|18:0.8893851637840271|18:0.8892168402671814|18:0.8817717432975769|18:0.8794856071472168|17:0.875317394733429|18:0.8715547919273377|18:0.8686976432800293|18:0.8584607243537903|18:0.8554686903953552|18:0.8519404530525208|18:0.8488841652870178|17:0.844763457775116|18:0.8411149382591248|18:0.8363658785820007|17:0.828848659992218|18:0.8233832120895386|18:0.8155984282493591|18:0.8018954992294312|18:0.7948765754699707|18:0.7877474427223206|18:0.7823286652565002|18:0.7743939161300659|18:0.7669575214385986|18:0.7600473165512085|18:0.7543275356292725|17:0.746609628200531|18:0.7387881278991699|18:0.7308641672134399|17:0.724183201789856|18:0.7187881469726563|18:0.7112976908683777|17:0.703724205493927|18:0.6974667310714722|18:0.6918587684631348|17:0.686916708946228|17:0.678369402885437|18:0.6711746454238892|18:0.6580615639686585|18:0.6454882025718689|18:0.6387587785720825|18:0.6334901452064514|18:0.6243889331817627|18:0.6144314408302307|18:0.6059276461601257|18:0.5996986627578735|18:0.5910734534263611|18:0.5807911157608032|18:0.5720168352127075|17:0.563982367515564|17:0.559135377407074|18:0.5501990914344788|18:0.5411987900733948|18:0.5321352481842041|17:0.523009717464447|18:0.5171707272529602|18:0.5062623023986816|18:0.4867618381977081|18:0.4807772636413574|18:0.4696028530597687|18:0.4574835002422333|18:0.4452777802944183|16:0.43738654255867|17:0.425928145647049|18:0.4135107398033142|18:0.3983275890350342|18:0.3830335140228272|18:0.3739868700504303|18:0.3754154443740845|18:0.3649042546749115|18:0.3548727929592133|18:0.3457173109054565|18:0.3346867263317108|18:0.3245346248149872|17:0.314344584941864|18:0.3155453205108643|18:0.3022547662258148|18:0.2891798913478851|18:0.2779293060302734|18:0.2647549510002136|18:0.2572042644023895|18:0.2458483278751373|18:0.2306544333696365|18:0.2182673811912537|18:0.2010578215122223|17:0.186668187379837|18:0.1722382009029388|17:0.158736377954483|18:0.1432691663503647|18:0.1277666091918945|18:0.1282546520233154|18:0.1083445250988007|19:0.09180255979299545|18:0.0752350240945816|18:0.0566939041018486|19:0.03911027312278748|19:0.01760314218699932|20:-0.00195618555881083|20:-0.02053690515458584|20:-0.03813326358795166|20:-0.06059936806559563|20:-0.08011045306921005|19:-0.1015366837382317|19:-0.1180614605545998|19:-0.1384285092353821|19:-0.1539071649312973|19:-0.1751275509595871|19:-0.1953073740005493|19:-0.2173133939504623|19:-0.2335082292556763|19:-0.2534231841564179|19:-0.2704077959060669|19:-0.2844972014427185|19:-0.2855839133262634|19:-0.3031868934631348|19:-0.3208338022232056|18:-0.335608184337616|19:-0.3368901312351227|19:-0.3521299660205841|19:-0.3703584372997284|18:-0.387543261051178|19:-0.3992239534854889|19:-0.4152894616127014|19:-0.4321067333221436|18:-0.451391339302063|19:-0.4531155824661255|19:-0.4661493301391602|19:-0.4824895560741425|19:-0.4969677329063416|19:-0.5104678273200989|19:-0.5238419771194458|19:-0.5362630486488342|18:-0.549383819103241|19:-0.5663984417915344|19:-0.5685619711875916|19:-0.5776084065437317|19:-0.5918604135513306|18:-0.602817714214325|19:-0.6144315004348755|19:-0.6281915307044983|19:-0.6432506442070007|19:-0.6536448001861572|19:-0.6639153957366943|19:-0.6762180328369141|19:-0.6869169473648071|19:-0.6995589137077332|19:-0.7106127142906189|19:-0.7187882661819458|19:-0.7261948585510254|19:-0.7348389625549316|19:-0.7459619641304016|19:-0.7517666816711426|19:-0.7600472569465637|19:-0.7663331627845764|19:-0.7719271779060364|19:-0.7799006104469299|19:-0.7853468656539917|19:-0.7907315492630005|18:-0.796054482460022|19:-0.8036333918571472|19:-0.8088034987449646|19:-0.8139106631278992|19:-0.8189542889595032|19:-0.8239337205886841|19:-0.8293914198875427|19:-0.8363664150238037|19:-0.8416392803192139|19:-0.8468308448791504|19:-0.8514336347579956|19:-0.8579646944999695|19:-0.8628934025764465|19:-0.8672583699226379|19:-0.8710812330245972|19:-0.8753179907798767|19:-0.8799451589584351|19:-0.8853858113288879|19:-0.8898259997367859|19:-0.8932249546051025|19:-0.8946108222007752|19:-0.8980252742767334|19:-0.9018003940582275|19:-0.9075327515602112|19:-0.9107314348220825|19:-0.9150378704071045|18:-0.917722761631012|19:-0.9207382202148438|19:-0.9251548051834106|19:-0.9276718497276306|19:-0.9315387606620789|19:-0.9339428544044495|19:-0.9373007416725159|19:-0.9405685663223267|19:-0.9428018927574158|19:-0.9471351504325867|19:-0.9501209259033203|19:-0.9527297019958496|18:-0.955264151096344|19:-0.9569122791290283|19:-0.9595854878425598|19:-0.9619123339653015|19:-0.9641640186309815|19:-0.9668138027191162|19:-0.9693508744239807|19:-0.9713426232337952|19:-0.9732584953308106|19:-0.9752981662750244|19:-0.9770535230636597|19:-0.9785497188568115|19:-0.9803351163864136|19:-0.9818612337112427|19:-0.9856117367744446|19:-0.9833106994628906|19:-0.9849779009819031|19:-0.9862565994262695|19:-0.9873285889625549|19:-0.9880926012992859|19:-0.9894042015075684|19:-0.9909067153930664|19:-0.9918652772903442|19:-0.9925633668899536|19:-0.9931238889694214|19:-0.9934232234954834|19:-0.9939757585525513|19:-0.9945241212844849|19:-0.9949464201927185|18:-0.995265543460846|19:-0.9990672469139099|19:-0.9955376386642456|19:-0.9957627654075623|19:-0.9958702921867371|19:-0.9959408044815064|19:-0.9960214495658875|19:-0.9960867166519165|19:-0.9961366653442383|19:-0.9961774349212647|
}
Add(ArrayRW,7387582,273,147)
{
link(onRead,9356890:doCalc,[])
link(Array,8575918:Array,[])
}
Add(CounterEx,14763508,217,147)
{
Max=317
link(onNext,7387582:doRead,[])
}
Add(Timer,16097396,154,147)
{
Interval=25
link(onTimer,14763508:doNext,[])
}
Add(Timer,9652284,154,343)
{
Interval=1
link(onTimer,6499108:doRefresh,[])
}

в первом варианте всё правильно и всё работает как положено, а вот как второй вариант входящих значений адаптировать так же на полный оборот в 360 ?
или никак и нужны доп данные?, ибо может быть +90 на NE и +90 на SE

Редактировалось 1 раз(а), последний 2021-02-16 15:27:05
карма: 2

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8886
Рейтинг: 823
#2: 2021-02-16 16:20:19 ЛС | профиль | цитата
Rysik, если у вас на входе значение Sin(х), то надо иметь ввиду -- каждому значению соответствуют ДВА значения угла поворота, из которых надо выбрать один, т. е. надо иметь на входе ещё один параметр.
Кстати это:
Rysik писал(а):
arcsin(%1)*(360/pi)
не верно, а верно arcsin(%1)*(180/pi)
карма: 19

0
Ответов: 1341
Рейтинг: 31
#3: 2021-02-16 16:56:22 ЛС | профиль | цитата
Леонид писал(а):
не верно


в первом варианте хз, ибо работало как положено, а вот второй да, только потом понял что оно не верно )


Леонид писал(а):
ДВА значения угла


да, действительно есть ещё один угол с опережением или отставанием и вот так выглядят стороны света SE и NE

line2.jpg


а вот так выглядит вращение на 360'

line2x.jpg


так как же учитывать эти оба угла?
карма: 2

0
Ответов: 8886
Рейтинг: 823
#4: 2021-02-16 18:29:25 ЛС | профиль | цитата
Rysik, по-русски ответьте на вопрос:
Что имеете на входе и что должны получить на выходе?
(Например:
1. На входе есть значение синуса угла необходимого поворота, на выходе нужен угол в градусах.
2. На входе есть значение синуса и косинуса угла необходимого поворота, на выходе нужен угол в градусах.
3. На входе есть значение синуса угла необходимого поворота и его расположение в левой (W) или правой (E) половине окружности, на выходе нужен угол в градусах.
4. На входе есть значение синуса угла необходимого поворота и его расположение в нижней (S) или верхней (N) половине окружности, на выходе нужен угол в градусах.)
карма: 19

0
Ответов: 1341
Рейтинг: 31
#5: 2021-02-16 18:50:30 ЛС | профиль | цитата
Леонид писал(а):
Что имеете на входе и что должны получить на выходе?



на входе есть синус и косинус
на выходе нужны градусы либо 0-360 либо от -180 до +180, разницы нету, для работы компонента "поворот трансформации"
карма: 2

0
Ответов: 8886
Рейтинг: 823
#6: 2021-02-16 21:41:58 ЛС | профиль | цитата
Rysik, один Math и функция atctan. Op1 -- sin, Op2 -- cos, вращение по часовой стрелке от оси Х. При использовании MathParse меняя знаки и ореранды можно установить направление начала и вращение. Результат в виде +-180 Гр.
Вращение

Del

Редактировалось 1 раз(а), последний 2021-02-17 17:59:59
карма: 19

0
Ответов: 1341
Рейтинг: 31
#7: 2021-02-16 23:21:17 ЛС | профиль | цитата
Леонид писал(а):
Rysik, один Math и функция atctan. Op1 -- sin, Op2 -- cos, вращение по часовой стрелке от оси Х. При использовании MathParse меняя знаки и ореранды можно установить направление начала и вращение. Результат в виде +-180 Гр.



крутился ведь около этого, но что то всё равно не допёр, спасибо
только не могу никак развернуть правильно, получается так если смотреть на точки на радаре от севера то поворот на 90 нужен дополнительно, а если смотреть с запада то поворот на -90 нужен, помогает только поменять местами косинус и синус, тогда всё правильно, но радар крутится в другую сторону

а вот теперь уже к Netspirit вопрос))), арктангенс не адекватно себя ведёт в FPC x64, в то время как x32 всё хорошо
карма: 2

0
Ответов: 8886
Рейтинг: 823
#8: 2021-02-16 23:26:48 ЛС | профиль | цитата
Rysik писал(а):
радар крутится в другую сторону

Леонид писал(а):
При использовании MathParse меняя знаки
+-sin, +-cos
карма: 19

0
Ответов: 1341
Рейтинг: 31
#9: 2021-02-17 02:15:50 ЛС | профиль | цитата
Леонид писал(а):
+-sin, +-cos


Так и делал, либо менял местами, либо менял знаки градусов, но как только он вращается в нужную сторону, то точки которые установлены на плоскости не правильно расположены, завтра приведу пример, уж все перепробовал, так и не добился ничего, либо вращается в обратную и все правильно, либо вращается правильно и NES надо убавлять угол на 90 либо NWS прибавлять угол на 90


Или можно косинус и синус с разными знаками? И изменится ли от этого что либо?

Редактировалось 1 раз(а), последний 2021-02-17 02:17:14
карма: 2

0
Ответов: 4621
Рейтинг: 746
#10: 2021-02-17 12:33:00 ЛС | профиль | цитата
Rysik писал(а):
арктангенс не адекватно себя ведёт в FPC x64, в то время как x32 всё хорошо
Гляну.
-----
Там - ассемблер, видимо в 64bit требует доработки. Вероятно, инструкцию "FLD" надо заменить на "FLDT".

Редактировалось 2 раз(а), последний 2021-02-17 12:56:44
карма: 26

0
Ответов: 8886
Рейтинг: 823
#11: 2021-02-17 12:51:04 ЛС | профиль | цитата
Rysik писал(а):
на плоскости не правильно расположены
Обратите внимание, что размер картинки меняется при повороте
Rysik писал(а):
Или можно косинус и синус с разными знаками? И изменится ли от этого что либо?

Вот пробуйте, записывайте 8 вариантов и выбирайте :
Проба


Add(MainForm,10195489,273,154)
{
Width=326
Height=395
link(onCreate,1286250:doStart,[(312,174)(312,167)])
}
Add(Edit,397150,392,154)
{
Left=135
Top=15
link(onChange,1596454:doCalc,[(431,160)(431,195)(319,195)(319,251)])
}
Add(Label,4695791,441,154)
{
Left=90
Top=15
Width=45
Height=17
Caption="Вход гр."
}
Add(MultiElementEx,1286250,336,154)
{
link(onEvent,397150:doText,[])
}
BEGIN_SDK
Add(EditMultiEx,3798219,21,21)
{
WorkCount=#6:doStop|7:doStart|
EventCount=#7:onEvent|
VarCount=#3:Sin|3:Cos|6:Bitmap|
Width=440
Height=137
link(Sin,15136605:Result,[(27,124)(328,124)])
link(Cos,15253274:Result,[(34,131)(370,131)])
link(doStop,16552321:doEvent,[(172,27)(172,48)])
link(Bitmap,5964985:Var1,[(41,75)])
link(doStart,10025977:doEvent1,[(32,34)(32,55)])
}
Add(Timer,8638487,231,42)
{
Interval=10
Enable=1
link(onTimer,9310174:doNext,[])
}
Add(Math,15136605,322,42)
{
OpType=13
AngleMode=1
link(onResult,15253274:doOperation,[])
}
Add(Counter,9310174,273,42)
{
Max=359
link(onNext,15136605:doOperation,[])
}
Add(Math,15253274,364,42)
{
OpType=12
AngleMode=1
link(onResult,9607879:doData,[])
link(Op1,15663817:Var2,[])
}
Add(GetDataEx,15663817,364,22)
{
Angle=3
link(Data,9310174:Count,[(316,27)(316,81)(279,81)])
}
Add(DoData,9607879,406,42)
{
link(onEventData,3798219:onEvent,[(445,48)(445,27)])
link(Data,15663817:Var3,[(412,27)])
}
Add(Bitmap,7859521,119,35)
{
HWidth=192
HHeight=192
FillColor=16777215
Point(doCreate)
}
Add(Hub,10025977,42,49)
{
link(onEvent1,7859521:doCreate,[])
link(onEvent2,1737940:doDraw,[(60,62)(60,90)])
}
Add(Img_Ellipse,1737940,70,84)
{
Point1=1048592
Point2=11534512
Size=2
link(onDraw,11435372:doDraw,[])
link(Bitmap,5964985:Var2,[])
}
Add(Img_Line,11435372,119,84)
{
Point1=6291476
Point2=6291628
Size=2
Color=255
link(onDraw,13313545:doDraw,[])
link(Bitmap,1836754:Var2,[])
}
Add(Img_Point,13313545,168,84)
{
X=165
Y=96
Color=255
Size=10
link(Bitmap,1836754:Var3,[(174,75)])
}
Add(GetDataEx,1836754,119,70)
{
link(Data,7859521:Bitmap,[])
}
Add(GetDataEx,5964985,70,70)
{
Angle=1
link(Data,1836754:Var1,[])
}
Add(IndexToChanel,16552321,182,42)
{
link(onEvent1,8638487:doTimer,[])
link(onEvent2,8638487:doStop,[])
}
END_SDK
Add(Img_Rotate,7232850,392,245)
{
BackgroundColor=16711935
Point(Width)
Point(Height)
Point(Result)
link(onResult,11402244:doLoad,[])
link(Bitmap,1286250:Bitmap,[(398,208)(356,208)])
link(Angle,1596454:Result,[(405,236)(384,236)(384,285)(342,285)])
}
Add(Image,11402244,434,245)
{
Left=20
Top=70
Width=280
Height=275
ViewStyle=0
}
Add(MathParse,1596454,336,245)
{
DataCount=5
MathStr="atan(%1*%3,%2*%4)*(%5=0) + atan(%2*%4,%1*%3)*(%5=1)"
AngleMode=1
link(onResult,7232850:doRotate,[])
link(X1,1286250:Sin,[])
link(X2,1286250:Cos,[])
link(X3,3203950:Result,[(356,236)(314,236)(314,243)(118,243)])
link(X4,2573863:Result,[(363,229)(307,229)(307,236)(174,236)])
link(X5,2760096:Checked,[(370,222)(223,222)])
}
Add(CheckBox,10620209,112,154)
{
Left=215
Top=10
Width=60
Font=[MS Sans Serif,8,1,0,1]
Caption=""-"Sin"
link(onCheck,3203950:doCalc,[(151,160)(151,153)(102,153)(102,202)])
}
Add(CheckBox,10970699,168,154)
{
Left=215
Top=30
Width=60
Font=[MS Sans Serif,8,1,0,1]
Caption=""-"Cos"
link(onCheck,2573863:doCalc,[(207,160)(207,153)(158,153)(158,202)])
}
Add(CheckBox,2760096,217,154)
{
Left=215
Top=50
Width=85
Font=[MS Sans Serif,8,1,0,1]
Caption="Sin<-->Cos"
}
Add(MathParse,3203950,112,196)
{
DataCount=1
MathStr="1-%1*2"
ResultType=0
Default=1
link(X1,10620209:Checked,[])
}
Add(MathParse,2573863,168,196)
{
DataCount=1
MathStr="1-%1*2"
ResultType=0
Default=1
link(X1,10970699:Checked,[])
}
Add(Button,11444296,203,98)
{
Left=10
Top=10
Caption="Пуск"
Point(doCaption)
link(onClick,7635074:doNext,[])
}
Add(Counter,7635074,252,98)
{
Max=1
Default=1
link(onNext,16570366:doEvent1,[])
}
Add(Hub,16570366,294,98)
{
link(onEvent1,1286250:doStop,[(326,104)(326,160)])
link(onEvent2,2472875:doEvent,[(317,111)(317,140)(53,140)(53,104)])
}
Add(IndexToChanel,2472875,63,98)
{
link(onEvent1,6890849:doClear,[])
link(onEvent2,5131388:doClear,[])
}
Add(Memory,6890849,112,91)
{
Default=String(Стоп)
link(onData,5131388:doValue,[(151,97)(151,104)])
}
Add(Memory,5131388,161,98)
{
Default=String(Пуск)
link(onData,11444296:doCaption,[])
}

карма: 19

0
Ответов: 1341
Рейтинг: 31
#12: 2021-02-17 16:57:36 ЛС | профиль | цитата
Netspirit писал(а):
Вероятно, инструкцию "FLD" надо заменить на "FLDT"


она и так FLDT

Леонид писал(а):
Вот пробуйте, записывайте 8 вариантов и выбирайте :



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

Редактировалось 1 раз(а), последний 2021-02-17 17:00:11
карма: 2

0
Ответов: 4621
Рейтинг: 746
#13: 2021-02-17 18:21:57 ЛС | профиль | цитата
Rysik писал(а):
она и так FLDT
В модуле Share.pas - нет. Не заметил - для WIN64 там у меня вообще включена pas-версия.
карма: 26

0
Ответов: 4621
Рейтинг: 746
#14: 2021-02-18 11:28:51 ЛС | профиль | цитата
Отличий в работе atan() для 32 и 64 бит не заметил. Нужен пример.
карма: 26

0
Ответов: 1341
Рейтинг: 31
#15: 2021-02-18 13:00:13 ЛС | профиль | цитата
Netspirit писал(а):
Отличий в работе atan() для 32 и 64 бит не заметил. Нужен пример.



Леонид приводил пример вращения, там я и заметил что криво работает x64




x64.zip

Редактировалось 4 раз(а), последний 2021-02-18 13:31:50
карма: 2

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)