Kanvas/WMD/es/doc/kanvas.idea.w.md

77 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

[[post_data {
"author" : "KyMAN",
"since" : 20211230,
"version" : 20211230
}]]
# Idea
La idea del proyecto es hacer un motor que se encargue de crear imágenes a partir de un Array de
diccionarios con anidamiento que contiene las formas, gráficos, bloques y grupos que dan en sí la
imagen final. Las imágenes se refrescarán cada X tiempo según configuración o según rendimiento del
equipo o navegador donde se esté ejecutando. Con ello facilitará a nivel de proceso iteraciones y
dinamismos con la imagen final, que será lo que vea el usuario, haciendo que con una simple
variación de uno o más valores dentro del Array de diccionarios se permita visualizar este cambio,
permitiendo con ello, movimientos y cualquier otro tipo de interactuación con el entorno.
El motor constará de un gestor de formas, objetos, etc. Unos serán por defecto y otros pueden ser
añadidos por el usuario, de esta forma permitimos un sistema simplificado de formas y objetos, así
como conjuntos que se repiten y así poder hacer reciclaje de objetos y elementos sin que el usuario
tenga que hacer un sistema en esprofeso para ello. También constará de los eventos que permitan no
solo interactuar al programador o a los elementos entre sí, sino también a los usuarios que consuman
el producto final.
Todo ello se moverá en JSON con Arrays que contengan diccionarios u objetos. Los Arrays pueden tener
anidados Arrays para hacer capas o bloques, y los objetos pueden tener hijos, por lo general es el
atributo "childs". El orden de las capas se otorga al orden en que se encuentren en los Arrays,
siendo los índices más bajos los que estén al fondo y los que tengan el índica más alto los que
estén más al frente.
También ha de mencionarse el posicionamiento, que en el plano principal constará de 9 posiciones de
inicio por el hecho de que estamos hablando de un entorno dinámico que muy posiblemente no tenga un
tamaño preestablecido y que se adapte a la pantalla, variando si ésta varía, no siendo igual empezar
a dibujar desde el centro que desde un lado u otro. Las posiciones se basan en el teclado numérico
de un teclado normal de PC de 105 teclas, con los valores del 1 al 9. Es importante destacar que
esto es para empezar el dibujado, a partir de ahí, todo se iniciará en el punto 0x0 desde el objeto,
es decir, si un objeto se pone en la posición 3x5, el punto 0x0 de un elemento hijo será el punto
3x5 del padre, y si se anida otro objeto en el hijo, siendo el nieto del objeto maestro sería la
suma de la posición del hijo y la del padre, y así sucesivamente. Por lo que hay que tener especial
cuidado en las anidaciones, incluso la rotación y el efecto Alpha se heredan. Todo ello no impide
que se pueda trabajar desde el objeto base y anidar con simples Array, lo que sería realmente
agrupar, como sucede en el juego [https://xgravity.k3y.pw/ XGravity].
Las iteracciones humanas con el entorno se harán a partir de eventos sobre el objeto HTML CANVAS,
por lo que ha de estar disponible cara el usuario sin que halla elementos por delante, si se monta
un objeto por delante, éste impedirá que se interactúe con el objeto HTML CANVAS en la parte que
éste ocupe. Los eventos recogen posición por lo que se pueden hacer rangos y analizar si se
encuentra en una posición concreta o no, como por ejemplo, para hacer botones o interactuar como
Shooter contra objetos en pantalla.
Finalmente, nos encontramos ante un entorno gráfico que intenta representar lo mismo en cualquier
proporción y resolución, aunque halla recortes en los lados o extremos superiores e inferiores, así
como variación de calidad por resolución. Para ello se basa en un entorno cuadrado que se conforma
con un lado equivalente al lado más estrecho, es decir, si estamos en un entorno visual horizontal,
el cuadrado se adaptará a la altura del mismo; mientras que si es un entorno vertical se adaptará al
ancho, de esta forma, simplemente ha de extenderse la imagen o el procesado fuera del rango
cuadrado, permitiendo que la parte importante, que es el cuadrado que centra la imagen sea completo.
Con respecto a la resolución se utiliza un sistema de celdas que indica los puntos que tiene el
dibujo (No confundir los puntos de dibujado que son áreas con un número X de píxeles con los propios
píxels), lo que permite que en cualquier resolución salga el mismo dibujo puesto que el dibujo
ocupará Y celdas o cuadrados de dibujo; y cada celda ocupará X píxeles de dibujo.
Con todo esto, se entiende que la idea es hacer un sistema muy ágil de interpretación del esquema de
dibujo (Arrays y diccionarios), lo que daría lugar a que la complejidad de proceso sea el número de
partículas (Imágenes, formas, etc.) y no los dinamismos ni las interactuaciones humanas sobre el
entorno.
[[html_data {
"title" : "Kanvas - Objetivos",
"url" : "https://kanvas.k3y.pw/es/doc/kanvas.idea.html",
"author" : "KyMAN",
"since" : 20211230,
"version" : 20211230,
"key_words" : "kanvas,canvas,kyman,2d,graphics,idea,planteamiento",
"description" : "La idea del proyecto Kanvas.",
"project" : "Kanvas",
"logo" : "https://kanvas.k3y.pw/images/kanvas.png"
}]]