New generate modes (#256)

* feat : 2 new generate modes added

* fix : overall_test.py updated

* doc : document updated

* doc : CHANGELOG.md updated

* Update examples/demo.ipynb

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
pull/257/head
Sepand Haghighi 2025-04-07 19:31:52 +03:30 zatwierdzone przez GitHub
rodzic 9682171dad
commit d1dc52b282
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
6 zmienionych plików z 20 dodań i 2 usunięć

Wyświetl plik

@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- 2 new generation modes
1. `F1_VS_F1F2`
2. `F2_VS_F1F2`
## [1.5] - 2025-01-22
### Added
- 3 new generation modes

Wyświetl plik

@ -123,7 +123,7 @@ Samila is a generative art generator written in Python, Samila lets you create i
```
<img src="https://github.com/sepandhaghighi/samila/raw/master/otherfiles/images/10.png">
Supported modes : `F1_VS_F2`, `F2_VS_F1`, `F1_VS_INDEX`, `F2_VS_INDEX`, `INDEX_VS_F1`, `INDEX_VS_F2`, `F1_VS_X1`, `F1_VS_X2`, `F2_VS_X1`, `F2_VS_X2`, `X1_VS_F1`, `X1_VS_F2`, `X2_VS_F1`, `X2_VS_F2`, `F1F2_VS_F1`, `F1F2_VS_F2` and `RANDOM`
Supported modes : `F1_VS_F2`, `F2_VS_F1`, `F1_VS_INDEX`, `F2_VS_INDEX`, `INDEX_VS_F1`, `INDEX_VS_F2`, `F1_VS_X1`, `F1_VS_X2`, `F2_VS_X1`, `F2_VS_X2`, `X1_VS_F1`, `X1_VS_F2`, `X2_VS_F1`, `X2_VS_F2`, `F1F2_VS_F1`, `F1F2_VS_F2`, `F1_VS_F1F2`, `F2_VS_F1F2` and `RANDOM`
Default mode is `F1_VS_F2`

Wyświetl plik

@ -102,7 +102,7 @@
"source": [
"We have the option to select from various generation modes.\n",
"\n",
" The avaliable modes are `F1_VS_F2`, `F2_VS_F1`, `F1_VS_INDEX`, `F2_VS_INDEX`, `INDEX_VS_F1`, `INDEX_VS_F2`, `F1_VS_X1`, `F1_VS_X2`, `F2_VS_X1`, `F2_VS_X2`, `X1_VS_F1`, `X1_VS_F2`, `X2_VS_F1`, `X2_VS_F2`, `F1F2_VS_F1`, `F1F2_VS_F2` and `RANDOM`"
" The available modes are `F1_VS_F2`, `F2_VS_F1`, `F1_VS_INDEX`, `F2_VS_INDEX`, `INDEX_VS_F1`, `INDEX_VS_F2`, `F1_VS_X1`, `F1_VS_X2`, `F2_VS_X1`, `F2_VS_X2`, `X1_VS_F1`, `X1_VS_F2`, `X2_VS_F1`, `X2_VS_F2`, `F1F2_VS_F1`, `F1F2_VS_F2`, `F1_VS_F1F2`, `F2_VS_F1F2` and `RANDOM`"
]
},
{

Wyświetl plik

@ -151,6 +151,12 @@ class GenerativeImage:
elif self.generate_mode == GenerateMode.F1F2_VS_F2.value:
data1_ = self.function1(point[0], point[1]).real * self.function2(point[0], point[1]).real
data2_ = self.function2(point[0], point[1]).real
elif self.generate_mode == GenerateMode.F1_VS_F1F2.value:
data1_ = self.function1(point[0], point[1]).real
data2_ = self.function1(point[0], point[1]).real * self.function2(point[0], point[1]).real
elif self.generate_mode == GenerateMode.F2_VS_F1F2.value:
data1_ = self.function2(point[0], point[1]).real
data2_ = self.function1(point[0], point[1]).real * self.function2(point[0], point[1]).real
self.data1.append(data1_)
self.data2.append(data2_)
except Exception:

Wyświetl plik

@ -94,6 +94,8 @@ class GenerateMode(Enum):
X2_VS_F2 = "x2_vs_f2"
F1F2_VS_F1 = "f1f2_vs_f1"
F1F2_VS_F2 = "f1f2_vs_f2"
F1_VS_F1F2 = "f1_vs_f1f2"
F2_VS_F1F2 = "f2_vs_f1f2"
RANDOM = "random"

Wyświetl plik

@ -420,6 +420,12 @@ True
>>> g.generate(start=-2*math.pi, step=0.1, stop=math.pi/2, mode=GenerateMode.F1F2_VS_F2)
>>> g.generate_mode == GenerateMode.F1F2_VS_F2.value
True
>>> g.generate(start=-2*math.pi, step=0.1, stop=math.pi/2, mode=GenerateMode.F1_VS_F1F2)
>>> g.generate_mode == GenerateMode.F1_VS_F1F2.value
True
>>> g.generate(start=-2*math.pi, step=0.1, stop=math.pi/2, mode=GenerateMode.F2_VS_F1F2)
>>> g.generate_mode == GenerateMode.F2_VS_F1F2.value
True
>>> os.remove("test.png")
>>> os.remove("test2.png")
>>> os.remove("data.json")