Как правильно вставить в Ардуино файл?

а не…, на месте!

2 лайка

А речь не про равенство условий (что бы это ни значило), а про конкретное устройство:
image

RP2040 даст в конструкцию полную автономию и экономию (плоттер - игрушка). А так мы приблизимся к концепту 3D принтера - карта связной между ПК с ПО и исполнителем.
Что касается понижения точности при конвертации. Мне кажется должны быть настройки в приложениях для работы с такими файлами, может и в онлайн конвертерах есть, просто я не наткнулся.

Есть два человека не человека. Оба ИИ. Но от разных авторов. Ну и кит, который всегда прав.

1 лайк

Вообще-то генерализация не является чисто механическим процессом.Так что наивно надеяться на то, что “настройки” все сделают за тебя.

По идее надо соседние вектора с малым расхождением dX,dY в один объединять - и весь алгоритм…
Попробую на экранчике цветном и есп32 - там места должно хватать под текст файла в любой редакции :slight_smile:

А зачем? Вы же, вроде, собрались RP2040 использовать - там места хватит

1 лайк

Шестигранник вместо окружности? Или квадрат?

Может взять инструмент под задачу, а не пихать невпихуемое?

Это не алгоритм, это - хотелка.

Если это учебная задача, то в поселке Грязь приступить к ее решению может любой житель. А в поселке Чистота только местный лесопромышленник.

Ну а если прикладная - зачем здесь Ардуино?

Я о том и говорю. Что взять plt файл, что от руки обрисованный, будет один хрен. Вот так:


И по времени подготовки исходника к отрисовке тоже, хотя одним интересно обрисовывать, а другим конвертировать. Ресурсы уно компенсирует и ЕСП32.

Что для одних учебная, для других прикладная :slight_smile:

Ну вот убей меня (нет, не убивай) как применить к данной задаче дралоскоп - не пойму…
Генерализацию (что бы это не значило) должна делать машина. Задача переложить заготовку из одного станка а другой. Полуавтомат. А в идеале полный автомат.
Шоб если тетка - рука под стол, а если муха - прихлопнуть))


IMG_20230725_120001
Вот к примеру, исключены полностью вектора у которых dx&&dy<3 пикселей, а потом замещены соседними. Картинка не сильно испортилась.
А вообще векторная графика многое позволяет на экранчиках, наслоение например.

1 лайк

это сделано предварительно до загрузки в ардуину или уже на ней?

На самой Ардуино, одной короткой строчкой.

/////////////////////////////////////
void PD(int X2,int Y2){
X2=-X2/M+160;Y2=Y2/M;
//if(abs(X1-X2)<3&&abs(Y1-Y2)<3){}
//else{   
 tft.drawLine(X1,Y1,X2,Y2,color);
 X1=X2;Y1=Y2;
//} 
//delay(20);    
}
//////////////////////////////////////

Или масштабирование.


А если ставить делей, то картинка будет медленно рисоваться или стираться (часы-циферные можно с красивой графикой сделать).

Это намного лучше, чем Вы пытались изложить словами: по коду видно, что Вы выбрасываете часть точек, а не векторов, как Вы написали словами, но сам критерий, которым фильтруете точки, никуда не годится.

Линии замкнуты, число точек и векторов совпадает. Выброс точки=выброс вектора.
А как их ещё можно фильтровать? Сделал как Командир советовал, всё равно это 3600 байт картинка. Надо как то на этапе подготовки файла сокращать его объём.


[details="Спойлер"]
///////////////////////////////////////////////
const int ris_1[] = {// индеец
-296,3373,296,282,2695,282,5094,282,5094,3373,5094,6463,2695,6463,296,6463,296,3373,-4925,3373,4925,452,2695,452,466,452,466,3373,466,6294,2695,6294,
4925,6294,4925,3373,-1319,5015,1292,4948,1274,4894,1264,4840,1259,4775,1253,4657,1293,4671,1333,4697,1372,4739,1442,4823,1558,4953,1663,5070,1707,5127,
1659,5134,1541,5136,1374,5136,1319,5015,-1849,5076,1759,4996,1647,4884,1536,4764,1449,4661,1403,4597,1367,4537,1345,4491,1342,4468,1395,4466,1516,4470,
1682,4477,1816,4590,1946,4698,2070,4796,2160,4869,2215,4923,2230,4944,2239,4963,2240,4979,2235,4993,2194,5024,2118,5067,2033,5107,1969,5129,1944,5131,
1919,5124,1889,5106,1849,5076,-2445,4884,2386,4851,2308,4802,2219,4740,2128,4674,2043,4609,1972,4551,1923,4506,1905,4480,1913,4465,1936,4448,1970,4430,
2011,4413,2058,4398,2107,4386,2154,4377,2197,4374,2243,4379,2293,4392,2345,4415,2401,4447,2461,4489,2525,4541,2594,4603,2668,4675,2795,4805,2756,4837,
2712,4863,2653,4887,2593,4904,2541,4911,2498,4903,2445,4884,-3488,4771,3452,4756,3419,4739,3390,4718,3363,4693,3338,4664,3315,4630,3293,4590,3272,4545,
3211,4419,3130,4267,3062,4142,3034,4082,3053,4060,3099,4034,3155,4012,3206,4002,3239,4004,3266,4014,3291,4033,3313,4064,3334,4111,3356,4174,3380,4258,
3408,4365,3431,4439,3460,4498,3496,4544,3540,4582,3563,4595,3586,4605,3609,4611,3633,4613,3684,4605,3739,4583,3781,4558,3820,4521,3868,4462,3933,4370,
3956,4341,3981,4315,4008,4294,4039,4275,4072,4261,4108,4250,4148,4242,4191,4238,4253,4238,4308,4248,4355,4266,4395,4293,4426,4329,4448,4372,4461,4422,
4465,4480,4462,4531,4453,4575,4439,4612,4420,4643,4396,4667,4367,4685,4333,4695,4294,4699,4266,4698,4245,4693,4229,4684,4218,4670,4212,4649,4210,4622,
4212,4587,4218,4544,4229,4473,4233,4439,4217,4432,4179,4431,4136,4437,4102,4448,4076,4464,4053,4489,4025,4530,3986,4596,3936,4669,3888,4722,3847,4747,
3802,4768,3753,4783,3701,4792,3648,4796,3594,4794,3540,4785,3488,4771,-2980,4734,2895,4680,2757,4578,2609,4460,2493,4360,2409,4281,2454,4229,2479,4204,
2509,4181,2542,4160,2578,4141,2616,4124,2655,4111,2695,4102,2733,4096,2777,4094,2807,4096,2831,4104,2853,4119,2887,4157,2939,4225,3000,4314,3066,4414,
3128,4513,3181,4602,3218,4670,3231,4707,3216,4723,3176,4739,3125,4751,3075,4755,3027,4749,2980,4734,-3584,4492,3555,4475,3526,4449,3500,4419,3484,4390,
3479,4368,3479,4339,3484,4300,3494,4252,3506,4194,3511,4145,3510,4094,3502,4027,3496,3956,3497,3898,3508,3852,3529,3817,3561,3791,3605,3774,3662,3765,
3732,3762,3792,3763,3836,3767,3871,3778,3906,3796,3954,3830,3990,3871,4014,3921,4029,3981,4033,4019,4027,4047,4005,4077,3958,4122,3898,4185,3852,4246,
3820,4305,3803,4363,3796,4388,3785,4411,3771,4433,3753,4452,3733,4469,3710,4482,3686,4491,3660,4496,3615,4497,3584,4492,-1256,4350,1235,4337,1219,4322,
1209,4303,1203,4281,1202,4254,1205,4223,1214,4187,1228,4144,1246,4092,1264,4052,1284,4023,1310,4004,1343,3992,1388,3987,1447,3987,1524,3989,1604,3991,
1679,3990,1751,3984,1824,3974,1987,3937,2194,3875,2422,3803,2588,3756,2718,3725,2838,3704,2960,3692,3090,3685,3217,3686,3330,3694,3408,3704,3404,3782,
3401,3821,3394,3852,3382,3874,3363,3890,3332,3900,3289,3906,3231,3908,3155,3909,3028,3913,2914,3924,2814,3942,2730,3967,2624,4014,2427,4108,2285,4173,
2157,4227,2040,4271,1930,4306,1824,4332,1717,4351,1607,4363,1489,4370,1392,4373,1329,4371,1288,4364,1256,4350,-4312,4170,4268,4151,4238,4128,4218,4098,
4205,4057,4199,4017,4199,3981,4205,3951,4218,3926,4237,3906,4262,3892,4293,3883,4331,3881,4372,3882,4404,3888,4430,3898,4450,3914,4464,3937,4473,3967,
4477,4006,4479,4054,4476,4091,4467,4122,4453,4147,4434,4165,4410,4177,4381,4182,4349,4180,4312,4170,-1411,3820,1375,3712,1326,3543,1283,3389,1242,3280,
1220,3235,1194,3195,1165,3155,1130,3114,1103,3082,1082,3053,1064,3023,1050,2991,1028,2905,1006,2773,993,2657,992,2567,996,2533,1003,2506,1012,2488,
1024,2478,1080,2466,1157,2460,1236,2461,1297,2469,1328,2479,1354,2492,1377,2506,1394,2523,1408,2542,1418,2564,1423,2589,1425,2616,1425,2680,1341,2711,
1281,2735,1256,2750,1270,2768,1305,2787,1350,2802,1393,2808,1428,2808,1455,2805,1476,2800,1492,2790,1504,2775,1514,2753,1523,2724,1532,2685,1547,2634,
1565,2589,1587,2549,1616,2513,1652,2480,1698,2447,1754,2413,1822,2376,1883,2343,1935,2311,1980,2280,2017,2247,2049,2213,2076,2177,2098,2137,2117,2093,
2141,2012,2159,1919,2169,1823,2170,1736,2167,1658,2263,1645,2316,1640,2364,1641,2413,1646,2472,1658,2553,1680,2591,1696,2588,1758,2570,1894,2549,2044,
2533,2183,2522,2311,2517,2426,2516,2531,2521,2623,2531,2704,2546,2773,2573,2858,2609,2963,2640,3063,2653,3134,2651,3163,2643,3181,2621,3194,2581,3207,
2532,3222,2488,3230,2446,3231,2405,3224,2362,3209,2315,3185,2261,3152,2197,3109,2100,3046,2014,3006,1972,2993,1929,2984,1883,2979,1833,2977,1765,2982,
1703,2995,1647,3016,1599,3046,1558,3084,1524,3129,1498,3182,1480,3243,1473,3317,1477,3394,1483,3431,1493,3465,1504,3495,1518,3521,1536,3544,1559,3565,
1585,3583,1616,3600,1685,3625,1764,3638,1822,3640,1878,3636,1931,3628,1983,3614,2033,3595,2081,3571,2128,3541,2173,3507,2249,3450,2323,3411,2361,3397,
2401,3387,2442,3379,2486,3375,2550,3372,2588,3376,2614,3389,2643,3416,2676,3462,2700,3516,2707,3543,2709,3566,2708,3585,2701,3598,2653,3618,2556,3648,
2419,3690,2275,3741,2105,3800,1952,3840,1802,3865,1640,3876,1439,3885,1411,3820,-4068,3745,4009,3710,4088,3488,4155,3292,4208,3133,4246,3014,4275,2934,
4300,2881,4326,2841,4345,2820,4364,2805,4384,2796,4405,2793,4426,2796,4448,2805,4471,2820,4494,2841,4525,2880,4544,2928,4553,2982,4550,3044,4537,3114,
4512,3190,4476,3274,4429,3366,4367,3469,4292,3580,4218,3680,4159,3749,4127,3780,4068,3745,-3500,3511,3505,3342,3519,3140,3542,2868,3551,2688,3546,2539,
3528,2357,3506,2104,3500,1894,3503,1809,3510,1740,3521,1688,3536,1655,3561,1631,3590,1616,3623,1613,3656,1618,3689,1633,3720,1656,3747,1688,3769,1727,
3794,1805,3810,1907,3819,2032,3820,2178,3814,2344,3799,2528,3777,2728,3748,2942,3682,3365,3641,3576,3622,3624,3602,3647,3578,3654,3546,3655,3500,3655,
3500,3511,-3759,3617,3800,3369,3888,2829,3966,2350,4015,2070,4048,1922,4077,1840,4090,1815,4107,1793,4125,1774,4145,1759,4167,1748,4190,1741,4214,1739,
4238,1741,4273,1752,4302,1770,4327,1795,4346,1827,4359,1867,4368,1916,4370,1972,4368,2038,4360,2112,4347,2196,4328,2289,4303,2392,4238,2628,4150,2907,
4014,3356,3937,3649,3909,3653,3844,3655,3751,3655,3759,3617,-3006,3600,2950,3577,2904,3549,2867,3515,2841,3477,2825,3436,2821,3391,2827,3343,2845,3294,
2859,3267,2874,3253,2897,3247,2934,3246,2966,3246,2991,3249,3009,3253,3021,3261,3028,3273,3030,3289,3027,3310,3021,3337,3012,3387,3013,3425,3018,3439,
3025,3450,3034,3458,3047,3464,3070,3468,3094,3464,3118,3454,3141,3440,3161,3420,3178,3397,3190,3371,3198,3343,3199,3317,3195,3292,3186,3269,3172,3247,
3152,3225,3126,3204,3094,3182,3055,3161,2985,3119,2934,3078,2916,3058,2903,3038,2895,3018,2893,2999,2895,2981,2905,2968,2923,2958,2953,2948,3020,2936,
3094,2933,3158,2937,3196,2949,3234,3007,3295,3121,3336,3207,3360,3265,3370,3312,3373,3364,3371,3401,3366,3434,3358,3464,3347,3491,3331,3515,3312,3537,
3290,3557,3262,3574,3209,3594,3137,3606,3063,3608,3006,3600,-1611,3474,1598,3413,1592,3350,1595,3289,1604,3231,1621,3179,1644,3134,1673,3098,1707,3073,
1749,3058,1796,3050,1846,3049,1897,3055,1947,3068,1995,3087,2040,3113,2079,3144,2112,3181,2138,3221,2158,3264,2170,3307,2174,3349,2170,3388,2158,3422,
2138,3450,2117,3469,2092,3479,2056,3484,2001,3485,1928,3481,1877,3468,1858,3457,1842,3444,1830,3427,1820,3406,1814,3386,1813,3366,1816,3348,1824,3331,
1837,3316,1855,3302,1878,3289,1906,3277,1981,3250,1942,3210,1921,3192,1902,3181,1883,3178,1858,3181,1836,3188,1814,3199,1793,3214,1774,3233,1759,3253,
1746,3275,1738,3296,1736,3318,1740,3366,1751,3423,1760,3468,1755,3495,1731,3511,1685,3521,1652,3525,1633,3521,1622,3506,1611,3474,-2862,2849,2814,2841,
2774,2830,2741,2813,2713,2792,2692,2764,2675,2730,2662,2688,2653,2639,2648,2553,2653,2455,2666,2354,2688,2262,2702,2220,2717,2196,2741,2183,2784,2173,
2900,2158,3078,2149,3206,2145,3274,2146,3293,2149,3305,2155,3313,2163,3320,2175,3338,2206,3354,2241,3367,2279,3377,2321,3390,2419,3394,2540,3390,2661,
3378,2740,3368,2768,3354,2789,3336,2805,3315,2818,3240,2834,3112,2846,2972,2852,2862,2849,-3090,2611,3113,2594,3128,2572,3136,2547,3137,2519,3131,2490,
3119,2461,3100,2433,3075,2407,3042,2385,3009,2374,2979,2373,2951,2382,2927,2401,2909,2427,2897,2462,2893,2503,2896,2549,2904,2578,2917,2592,2937,2604,
2961,2613,2988,2619,3016,2622,3044,2622,3069,2618,3090,2611,-1167,2357,1122,2344,1092,2324,1083,2312,1077,2299,1076,2284,1078,2268,1086,2250,1101,2234,
1122,2220,1151,2209,1230,2191,1342,2180,1424,2173,1493,2164,1551,2152,1599,2137,1636,2118,1665,2095,1686,2068,1699,2036,1702,2019,1696,2009,1678,2002,
1643,1995,1569,1992,1483,1997,1389,2006,1291,2009,1234,2010,1204,2006,1192,1994,1188,1970,1187,1937,1191,1908,1201,1885,1218,1865,1243,1848,1276,1834,
1318,1823,1369,1813,1401,1805,1434,1791,1469,1772,1504,1748,1573,1703,1638,1671,1711,1654,1803,1648,1894,1651,1967,1664,2021,1682,2015,1840,2011,1924,
2004,1981,1992,2025,1973,2067,1941,2120,1904,2167,1861,2210,1813,2247,1759,2280,1699,2308,1633,2330,1562,2348,1467,2362,1359,2368,1253,2366,1167,2357,
-2702,2045,2704,2006,2722,1934,2748,1854,2776,1789,2819,1726,2877,1658,2935,1602,2979,1573,3006,1575,3043,1593,3088,1624,3135,1663,3183,1709,3227,1758,
3263,1807,3289,1853,3309,1906,3316,1949,3314,1966,3310,1980,3303,1989,3292,1995,3151,2021,2957,2042,2863,2049,2783,2052,2727,2051,2702,2045,-3064,1892,
3083,1887,3092,1878,3093,1863,3088,1839,3076,1809,3058,1787,3030,1771,2990,1760,2969,1757,2951,1764,2930,1786,2901,1827,2850,1905,2938,1904,3012,1900,
3064,1892  
};
///////////////////////////////////////////////

[/details]

Еще можно фильтровать правильно.

Постарайтесь ответить на 3 вопроса:

  1. Что должен делать алгоритм генерализации?
  2. Что делает Ваш алгоритм?
  3. То ли Ваш алгоритм делает, что нужно?

Если тяжело сразу сообразить, приведу два примера:
{0,0;0,2;2,2;2,0;0,0}
{0,0;4,3;8,6;12,9;16,12}

Вот для каждого из этих примеров и разберите три приведенных выше вопроса.

Подсказка ясная :slight_smile:
Но тут затык с float (он нужен). Значение dy/dx для пары точек может оказаться отрицательным. Хотя само значение не нужно, нужно сравнивать эти отношения для соседних пар (тройка точек, одна общая для пар). Если значения почти равны - точку отбрасывать.

Не нужен.
Делал генерализацию для ПК (где float и даже double дешевые) для ГИС (т. е. в условиях, когда линию из метровых сегментов может потребоваться отображать в масштабе Земного шара), и при этом в блоке отображения нигде не использовал плавающую точку.

Страшно даже подумать!

Хотя по мне - гораздо хуже, если dx окажется равным нулю.

Так “нужно” или “не нужно”?
Какой-то очень неопределенный алгоритм получается. Может, сразу отбрасывать по random?