41

(17 відповідей, залишених у C++)

А в першій частині я так розумію мова йде про максимальне число з усіх непарних елементів в масиві, та мінімальне з усіх парних

42

(15 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

https://jsfiddle.net/cxhexdyw/
зробив скейл у напрямку довільного вектора (перпендикуляр до заданої лінії в мому випадку)

моменти які варто виділити:
як заскейлити зображення під довільним кутом
API для роботи з канвасом по замовчуванню дає можливість скейлити зображення тільки відносно координатних осей. Тому нам потрібно перетворити координатну площину таким чином, щоб наш вектор став в рівень з однією з цих осей. Після перетворення ми можемо заскейлити його звичним спочобом по "х" чи "у" (в залежності від того до якої осі ми рівнялись). Після того як скейл змінено нам потрібно повернути координатну площину до початкового її стану, тому застосовуємо протилежні перетворення до тих, які ми робили в першому кроці:

var angle = Math.atan2(line.b.y - line.a.y, line.b.x - line.a.x);//знаходимо кут до осі У

ctx.rotate(angle); //крутимо координатну площину, щоб вектор скейлу став в рівень з віссю У
ctx.scale(1, scale); //скейлимо площину
ctx.rotate(-angle); //повертаємо її на місце

ctx.drawImage(... 

як зафіксувати нерухому точку при перетворенні
це потрібно для того, щоб розмістити в правильному місці заскейлене зображення
Згрубша алгоритм такий:
зсуваємо координатну площину до потрібної точки (в даному прикладі це центр лінії яка є перпендикуляром до напрямного вектора)
потім застосовуємо потрібні нам перетворення (rotate, scale)
і при малюванні зображення початкові його координати задаємо як координати тої самої точки тільки зі знаком "-"

var midX = (line.a.x+line.b.x)/2; 
var midY = (line.a.y+line.b.y)/2;
  
ctx.translate(midX, midY);

ctx.drawImage(canvasSource, 0, 0, canvasSource.width, canvasSource.height, 
  -midX, -midY, canvas.width, canvas.height);

По суті якщо зображення ніяк не вертіти, то зображення намалюєтсья без змін, а якщо змінити rotate, то буде видно що зображення поркутилось не довкола лівого верхнього кута, а довкола заданої точки


сильно допомогла стаття http://codetheory.in/canvas-rotating-an … lar-point/

43

(149 відповідей, залишених у Інше)

Lace написав:

Хто-то нагріє руки, так це продавці заліза.

Якщо хочеш розбагатіти під час золотої лихоманки, то потрібно якомога далі триматись від золота :)

В золоту лихоманку продавай лопати

44

(2 відповідей, залишених у Обговорення)

Для роботи з вордом я б використовував бібліотеку https://python-docx.readthedocs.io/en/latest/
Як задати вирівнювання https://python-docx.readthedocs.io/en/l … halignment

А для екселю вибирайте щось зі списку http://www.python-excel.org/
Якщо ж ви зовсім новачок, то краще дивіться сюди https://домен агресора/post/232291/

Надалі учіться вчитись, ніхто за вас гуглити не збирається

Прописуєте шлях до компілятора у PATH, тоді

cppcompiler mycppfile.cpp -o programname.exe

http://www.mingw.org/wiki/mingw_for_fir … sers_howto

46

(15 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

https://jsfiddle.net/sensei228/5bvcqxe3/
зробив скейл того що попадає у трикутну зону, та зміщення всього що йде після неї

тепер працюватиму над скейлом у напрямку довільного вектора, тобто не просто зліва направо

Прихований текст

Моя кінцева мета це модифікувати зображення маючи канву поділену на сітку з трикутників, де кожен з них має свій напрям скейлу

47

(7 відповідей, залишених у Обговорення)

у Qt є два способи реалізації gui: віджети, або  QML

оскільки ви кажете що у вас получаєтсья УРОДЛИВИЙ інтерфейс, то скорше всього ви використовуєте віджети, їх можна стилізувати звичайним CSS, але думаю це буде собі дорожче

я надаю перевагу qml, де ви маєте більшу свободу створення власних компонент, та є модуль з готовими компонентамиQt Quick Controls, гарно зкомпонувавши які можна добитись доброго результату

треба тільки перевірити чи все це діло підтримується у pyqt

амазон по ідеї теж має хмарні рішення на любий смак

49

(15 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

переробив скейлення так як зауважив факінун забравши хитрування з tempCanvas'ом
тепер просідання наче зникли
https://jsfiddle.net/sensei228/z6L4cjaa/9/

function drawScaledText() 
{
  //left part
  ctx.drawImage(canvasSource, 0, 0, canvas.width/2, 
  canvas.height, 0, 0, canvas.width/2, canvas.height);
  
  //right part
  ctx.drawImage(canvasSource, canvas.width/2, 0, canvasSource.width - canvas.width/2, 
  canvas.height, canvas.width/2, 0, canvas.width/2, canvas.height);
}

50

(15 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

він використовується безпосередньо для перетворення зображення, в нашому випадку скейлу, щоб канвас з якого ми перемальовуємо залишався незмінним

  tempCanvas.width = canvasSource.width - canvas.width/2;
  sourceImage = ctxSource.getImageData(canvas.width/2, 0, tempCanvas.width, tempCanvas.height);
  ctxTemp.putImageData(sourceImage, 0, 0);
  ctx.save();
  ctx.scale(0.5, 1);
  ctx.drawImage(tempCanvas, canvas.width, 0);
  ctx.restore();

але для лівої частини де зображення не трансформується так, можна було обійтись без нього

51

(15 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

https://jsfiddle.net/sensei228/z6L4cjaa/8/
ми спершу малюємо зображення на невидимий канвас, потім застосовуючи потрібні нам перетворення до намальованого зображення перемальовуємо його на видимий канвас
(знизу то той що мав бути невидимим)

52

(15 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

FakiNyan написав:

ніфіга не пойняв

Кажіть тоді з якого моменту незрозуміло
І гляньте код і приклад, можливо так буде легше


221VOLT написав:

є така штука як https://github.com/theshock/libcanvas

Дякую, подивлюсь чи найду якесь застосування тому

53

(15 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

довжину канвасу(1) на якому хочемо побачити результат позначимо 1, тобто це проміжок від 0 до 1

довжину невидимого канвасу(2) який буде в майбутньому скейлитись і малюватись на перший зробимо в 1.5 раз більшою за перший канвас, тобто це в нас проміжок від 0 до 1.5

тобто те що ми намалювали на канвасі (2) в його проміжку [0; 0.5] ідентично перемалюється на той же проміжок канвасу (1)
а те що на проміжку [0.5; 1.5] і має довжину 1, зіскейлиться в два рази, щоб його довжина стала 0.5 та перемалюється на проміжок [0.5; 1] канвасу(1)

шось я трохи туплю і складно пояснюю прості речі  %)

54

(15 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Такс я вернувся і накидав отакий кід
https://jsfiddle.net/sensei228/z6L4cjaa/

Ідейно воно працює так:
Є у нас два сектори канвасу: лівий та правий. На лівому текст має залишатись незмінним, а на правому ставати вдвічі вужчим

Створюємо невидимий канвас який буде 1.5 ширини того, який буде видимим в результаті, бо по іксу [0; 0.5] лишаються незмінними, а [0.5; 1.5] будуть перетворюватись на [0.5; 1]

Текст малюється спершу на невидимому канвасі.
Потім створюємо ще один тимчасовий канвас на який копіюємо вміст сектора з  невидимого канвасу, та використовуючи правильний скейл перемальовуємо його на наш кінцевий канвас і так для обох секторів.


В загальному я зробив те що хотів для початку, але навіть на такому простому прикладі відчутно просідають кадри, тому боюсь прийдеться переписувати на webgl.
Наступне над чим думатиму це як скейлити трикутні, а не квадратні зони

55

(15 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Привіт всім!

Таке в мене питання. Як краще здійснити пост-обробку намальованого на канвасі зображення?

Наприклад ми малюємо на канвасі текст у заданому користувачем місці.
Після цього все що намальовано ліворуч від центра канвасу залишаєтьсятаким як було, а те що праворуч - вдвічі звужується.

Взагалі таку проблему потрібно розглядати як малювання, а потім обробку намальваного,
чи можна задати якісь правили за якими зображення зразу буде малюватись так як потрібно?

І для обробки зображення такого плану існують якісь бібліотеки, чи потрібно писати свої webgl шейдери?

Буду радий любим порадам :)

56

(3 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Так, проблема була в кодуванні при читанні файлу.
Просто цей STLLoader заточений і під бінарні і під аскі формати, і виходить фронтенд версія з FileLoaderom сама розгрібала в якому кодуванні його прочитати

57

(3 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Проблема мабуть пов'язана з тим як зчитується файл
Оскільки приходять буфери різного розміру для парсання

На фронтенді використовується FileLoader, який використовує XMLHttpRequest
А на бекенді я читаю файл

var fs = require( 'fs' );
var file = './public/' + fileName;
var text = fs.readFileSync( file, 'utf8' );

І вже на парсання приходить різна кількість байтів

Можливо проблема з 'utf8'

58

(3 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

На клієнті DataView.byteLength = 707684
На сервері DataView.byteLength = 684328
думаю тут щось не так..

59

(3 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Всім привіт!

Є у мене один бібліотечний файл https://github.com/mrdoob/three.js/blob … LLoader.js
Який на клієнті працює без жодних проблем

А от коли пробую виконати його у node.js, то видає помилку

Це стається в момент коли він стикається з бінарним стл файлом (з ascii проблем немає)
В моменті коли використовуєтсья DataView, а саме DataView.getFloat32 (в коді це рядок 168)

Текст самої помилки:

RangeError: Offset is outside the bounds of the DataView

Як я викликаю цей скріпт:

require( './dependencies/three/STLLoader.js' );
var loader = new THREE.STLLoader();
geometry = loader.parse( text );

Не підкажите що я роблю не так?

60

(53 відповідей, залишених у Робота)

Вас на трекер посадили?