1 | ############################################# |
---|
2 | ## ## |
---|
3 | ## Welcome to Genotype Manipulation Demo! ## |
---|
4 | ## ## |
---|
5 | ############################################# |
---|
6 | Found converter accepting f1: "Recursive encoding" |
---|
7 | Found 6 converter(s) producing f0 |
---|
8 | |
---|
9 | Source genotype: '1.1:ssC[S;S;S]{ry=-0.214;ty=0.781}fSC[S;S;*;M'4:-5.154;M'0]fE[M;Gpart]{rx=0.603;ry=-0.9391;rz=0.3034;tx=0.6534;ty=0.6856;tz=-0.166;x=1;z=1}ttC[*;*;Gpart]{st=0.262}fTE{rx=0.603;ry=-0.9391;rz=0.3034;tx=0.6534;ty=0.6856;tz=-0.166;x=1;y=1;z=1}ftC[*;*;N'0'2'3'9'12'14]{ry=-0.199;y=0.828;z=0.806}' |
---|
10 | ( format S ) |
---|
11 | Converted to f0: |
---|
12 | p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214 |
---|
13 | p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365 |
---|
14 | p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034 |
---|
15 | p:5.053754302253353, -0.5377665050675111, 2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942 |
---|
16 | p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034 |
---|
17 | p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199 |
---|
18 | j:0, 1, sh=1 |
---|
19 | j:1, 2, sh=1 |
---|
20 | j:2, 3, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347 |
---|
21 | j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091 |
---|
22 | j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354 |
---|
23 | n:p=0, d=S |
---|
24 | n:p=0, d=S |
---|
25 | n:p=0, d=S |
---|
26 | n:p=1, d=S |
---|
27 | n:p=1, d=S |
---|
28 | n:p=1, d=* |
---|
29 | n:j=0, d=M |
---|
30 | n:j=0, d=M |
---|
31 | n:j=1, d=M |
---|
32 | n:p=2, d=Gpart |
---|
33 | n:p=3, d=* |
---|
34 | n:p=3, d=* |
---|
35 | n:p=3, d=Gpart |
---|
36 | n:p=5, d=* |
---|
37 | n:p=5, d=* |
---|
38 | n:p=5 |
---|
39 | c:6, 4, -5.154 |
---|
40 | c:7, 0 |
---|
41 | c:15, 0 |
---|
42 | c:15, 2 |
---|
43 | c:15, 3 |
---|
44 | c:15, 9 |
---|
45 | c:15, 12 |
---|
46 | c:15, 14 |
---|
47 | |
---|
48 | Model contains: 6 part(s) |
---|
49 | 5 joint(s) |
---|
50 | 16 neuron(s) |
---|
51 | |
---|
52 | Investigating details... |
---|
53 | ############################################# |
---|
54 | ## ## |
---|
55 | ## P A R T O B J E C T ## |
---|
56 | ## ## |
---|
57 | ############################################# |
---|
58 | (part # 1) |
---|
59 | Here is the full listing of properties as they are printed in f0 |
---|
60 | (please compare with f0 genotype). |
---|
61 | Some properties have special meaning (eg. geometry and connections groups) |
---|
62 | and should be handled with care, because they influence other elements of the model. |
---|
63 | |
---|
64 | [this data is provided by Part::properties() ] |
---|
65 | # id type name group (22 properties) |
---|
66 | 0. x = 1.84400826446281 f position.x Geometry |
---|
67 | 1. y = 0.0 f position.y Geometry |
---|
68 | 2. z = 0.0 f position.z Geometry |
---|
69 | 3. sh = 2 d 0 3 0 shape Geometry |
---|
70 | 4. s = 1.0 f 0.1 10.0 1.0 size Geometry |
---|
71 | 5. sx = 0.9090909090909091 f 0.05 5.0 1.0 scale.x Geometry |
---|
72 | 6. sy = 0.9090909090909091 f 0.05 5.0 1.0 scale.y Geometry |
---|
73 | 7. sz = 0.9090909090909091 f 0.05 5.0 1.0 scale.z Geometry |
---|
74 | 8. h = 0.0 f 0 1 0 hollow Other properties |
---|
75 | 9. dn = 1.0 f 0.2 5.0 1.0 density Other properties |
---|
76 | 10. fr = 0.36363636363636365 f 0.0 4.0 0.4 friction Other properties |
---|
77 | 11. ing = 0.25 f 0.0 1.0 0.25 ingestion Other properties |
---|
78 | 12. as = 0.25 f 0.0 1.0 0.25 assimilation Other properties |
---|
79 | 13. rx = 0.0 f rot.x Geometry |
---|
80 | 14. ry = 0.0 f rot.y Geometry |
---|
81 | 15. rz = 0.0 f rot.z Geometry |
---|
82 | 16. i = s info Other properties |
---|
83 | 17. Vstyle = part s 0 0 part vis_style Visual |
---|
84 | 18. vs = 0.2 f 0.05 0.7 0.2 visual thickness Visual |
---|
85 | 19. vr = 1.0 f 0.0 1.0 1.0 red component Visual |
---|
86 | 20. vg = 1.0 f 0.0 1.0 1.0 green component Visual |
---|
87 | 21. vb = 1.0 f 0.0 1.0 1.0 blue component Visual |
---|
88 | |
---|
89 | However, there is a subset of properties which may be modified more freely. |
---|
90 | Properties on this list are related only to this part and can be changed |
---|
91 | without much consideration. They are guaranteed to be always valid; any inconsistencies |
---|
92 | will be silently repaired. |
---|
93 | |
---|
94 | [this data is provided by Part::extraProperties() ] |
---|
95 | # id type name group (9 properties) |
---|
96 | 0. h = 0.0 f 0 1 0 hollow Extra properties |
---|
97 | 1. dn = 1.0 f 0.2 5.0 1.0 density Extra properties |
---|
98 | 2. fr = 0.36363636363636365 f 0.0 4.0 0.4 friction Extra properties |
---|
99 | 3. ing = 0.25 f 0.0 1.0 0.25 ingestion Extra properties |
---|
100 | 4. as = 0.25 f 0.0 1.0 0.25 assimilation Extra properties |
---|
101 | 5. vs = 0.2 f 0.05 0.7 0.2 visual thickness Extra properties |
---|
102 | 6. vr = 1.0 f 0.0 1.0 1.0 red component Extra properties |
---|
103 | 7. vg = 1.0 f 0.0 1.0 1.0 green component Extra properties |
---|
104 | 8. vb = 1.0 f 0.0 1.0 1.0 blue component Extra properties |
---|
105 | |
---|
106 | This set of properties can vary from release to release, |
---|
107 | but can be safely accessed by using extraProperties() call. |
---|
108 | This method accesses the full set of properies (even those |
---|
109 | which appear in future releases). |
---|
110 | Now we will try to change some of properties: |
---|
111 | |
---|
112 | Change property #7 to random value from range [0..1] |
---|
113 | Current value of 'vg' (green component) is '1.0' |
---|
114 | Setting new value... [ using ParamInterface::set() ] |
---|
115 | The value is now '0.548814' |
---|
116 | |
---|
117 | Let's see f0... (check out part #1 !) |
---|
118 | |
---|
119 | p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214 |
---|
120 | p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814 |
---|
121 | p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034 |
---|
122 | p:5.053754302253353, -0.5377665050675111, 2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942 |
---|
123 | p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034 |
---|
124 | p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199 |
---|
125 | j:0, 1, sh=1 |
---|
126 | j:1, 2, sh=1 |
---|
127 | j:2, 3, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347 |
---|
128 | j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091 |
---|
129 | j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354 |
---|
130 | n:p=0, d=S |
---|
131 | n:p=0, d=S |
---|
132 | n:p=0, d=S |
---|
133 | n:p=1, d=S |
---|
134 | n:p=1, d=S |
---|
135 | n:p=1, d=* |
---|
136 | n:j=0, d=M |
---|
137 | n:j=0, d=M |
---|
138 | n:j=1, d=M |
---|
139 | n:p=2, d=Gpart |
---|
140 | n:p=3, d=* |
---|
141 | n:p=3, d=* |
---|
142 | n:p=3, d=Gpart |
---|
143 | n:p=5, d=* |
---|
144 | n:p=5, d=* |
---|
145 | n:p=5 |
---|
146 | c:6, 4, -5.154 |
---|
147 | c:7, 0 |
---|
148 | c:15, 0 |
---|
149 | c:15, 2 |
---|
150 | c:15, 3 |
---|
151 | c:15, 9 |
---|
152 | c:15, 12 |
---|
153 | c:15, 14 |
---|
154 | |
---|
155 | ############################################# |
---|
156 | ## ## |
---|
157 | ## J O I N T O B J E C T ## |
---|
158 | ## ## |
---|
159 | ############################################# |
---|
160 | (joint # 2) |
---|
161 | Similarly as with Part, the full list of properties comes first: |
---|
162 | |
---|
163 | # id type name group (21 properties) |
---|
164 | 0. p1 = 2 d -1 999999 -1 part1 ref# Connections |
---|
165 | 1. p2 = 3 d -1 999999 -1 part2 ref# Connections |
---|
166 | 2. sh = 1 d 0 3 0 shape Geometry |
---|
167 | 3. hx = 0.0 f hinge position.x Geometry |
---|
168 | 4. hy = 0.0 f hinge position.y Geometry |
---|
169 | 5. hz = 0.0 f hinge position.z Geometry |
---|
170 | 6. hrx = 0.0 f hinge rotation.x Geometry |
---|
171 | 7. hry = 0.0 f hinge rotation.y Geometry |
---|
172 | 8. hrz = 0.0 f hinge rotation.z Geometry |
---|
173 | 9. hxn = -1.5708 f -6.2832 0 -1.5708 hinge x negative limit Geometry |
---|
174 | 10. hxp = 1.5708 f 0 6.2832 1.5708 hinge x positive limit Geometry |
---|
175 | 11. hyn = -1.5708 f -6.2832 0 -1.5708 hinge y negative limit Geometry |
---|
176 | 12. hyp = 1.5708 f 0 6.2832 1.5708 hinge y positive limit Geometry |
---|
177 | 13. stif = 0.2165289256198347 f 0.0 1.0 1.0 stiffness Other properties |
---|
178 | 14. rotstif = 0.2165289256198347 f 0.0 1.0 1.0 rotation stiffness Other properties |
---|
179 | 15. stam = 0.25 f 0.0 1.0 0.25 stamina Other properties |
---|
180 | 16. i = s info Other properties |
---|
181 | 17. Vstyle = joint s 0 0 joint vis_style Visual |
---|
182 | 18. vr = 1.0 f 0.0 1.0 1.0 red component Visual |
---|
183 | 19. vg = 1.0 f 0.0 1.0 1.0 green component Visual |
---|
184 | 20. vb = 1.0 f 0.0 1.0 1.0 blue component Visual |
---|
185 | |
---|
186 | Actually, there are two kinds of Joints: delta and absolute. |
---|
187 | For this object, Joint::isDelta() returns 0, so this is the absolute Joint. |
---|
188 | |
---|
189 | Absolute Joints adapt to its Parts' positions. |
---|
190 | We can move a Part, and it does not influence the second part, nor the Joint. |
---|
191 | Let's move the first Part along y axis by -0.1... |
---|
192 | The Part's position is changed, but everything else stays intact: |
---|
193 | |
---|
194 | p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214 |
---|
195 | p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814 |
---|
196 | p:3.4488812833580815, -0.36888325253375553, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034 |
---|
197 | p:5.053754302253353, -0.5377665050675111, 2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942 |
---|
198 | p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034 |
---|
199 | p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199 |
---|
200 | j:0, 1, sh=1 |
---|
201 | j:1, 2, sh=1 |
---|
202 | j:2, 3, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347 |
---|
203 | j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091 |
---|
204 | j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354 |
---|
205 | n:p=0, d=S |
---|
206 | n:p=0, d=S |
---|
207 | n:p=0, d=S |
---|
208 | n:p=1, d=S |
---|
209 | n:p=1, d=S |
---|
210 | n:p=1, d=* |
---|
211 | n:j=0, d=M |
---|
212 | n:j=0, d=M |
---|
213 | n:j=1, d=M |
---|
214 | n:p=2, d=Gpart |
---|
215 | n:p=3, d=* |
---|
216 | n:p=3, d=* |
---|
217 | n:p=3, d=Gpart |
---|
218 | n:p=5, d=* |
---|
219 | n:p=5, d=* |
---|
220 | n:p=5 |
---|
221 | c:6, 4, -5.154 |
---|
222 | c:7, 0 |
---|
223 | c:15, 0 |
---|
224 | c:15, 2 |
---|
225 | c:15, 3 |
---|
226 | c:15, 9 |
---|
227 | c:15, 12 |
---|
228 | c:15, 14 |
---|
229 | |
---|
230 | How would this joint look like with delta option enabled? |
---|
231 | [ by calling Joint::useDelta(1) ] |
---|
232 | f0 is now: |
---|
233 | |
---|
234 | p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214 |
---|
235 | p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814 |
---|
236 | p:3.4488812833580815, -0.36888325253375553, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034 |
---|
237 | p:5.053754302253353, -0.537766505067511, 2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942 |
---|
238 | p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034 |
---|
239 | p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199 |
---|
240 | j:0, 1, sh=1 |
---|
241 | j:1, 2, sh=1 |
---|
242 | j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952711, -0.16888325253375558, 1.3310278019498911, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347 |
---|
243 | j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091 |
---|
244 | j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354 |
---|
245 | n:p=0, d=S |
---|
246 | n:p=0, d=S |
---|
247 | n:p=0, d=S |
---|
248 | n:p=1, d=S |
---|
249 | n:p=1, d=S |
---|
250 | n:p=1, d=* |
---|
251 | n:j=0, d=M |
---|
252 | n:j=0, d=M |
---|
253 | n:j=1, d=M |
---|
254 | n:p=2, d=Gpart |
---|
255 | n:p=3, d=* |
---|
256 | n:p=3, d=* |
---|
257 | n:p=3, d=Gpart |
---|
258 | n:p=5, d=* |
---|
259 | n:p=5, d=* |
---|
260 | n:p=5 |
---|
261 | c:6, 4, -5.154 |
---|
262 | c:7, 0 |
---|
263 | c:15, 0 |
---|
264 | c:15, 2 |
---|
265 | c:15, 3 |
---|
266 | c:15, 9 |
---|
267 | c:15, 12 |
---|
268 | c:15, 14 |
---|
269 | |
---|
270 | ...so this is a delta joint. |
---|
271 | |
---|
272 | Delta fields (dx,dy,dz) describe relative location of the second part. |
---|
273 | This joint will change the second Part's positions to preserve delta distance. |
---|
274 | Let's move the first Part (#2) along y axis (+0.1) and change delta.z (dz) by 0.1. |
---|
275 | Position of the second Part referenced by this joint (part #3) is now changed: |
---|
276 | |
---|
277 | p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214 |
---|
278 | p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814 |
---|
279 | p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034 |
---|
280 | p:5.053754302253353, -0.437766505067511, 2.762055603899782, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942 |
---|
281 | p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034 |
---|
282 | p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199 |
---|
283 | j:0, 1, sh=1 |
---|
284 | j:1, 2, sh=1 |
---|
285 | j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952711, -0.16888325253375558, 1.4310278019498912, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347 |
---|
286 | j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091 |
---|
287 | j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354 |
---|
288 | n:p=0, d=S |
---|
289 | n:p=0, d=S |
---|
290 | n:p=0, d=S |
---|
291 | n:p=1, d=S |
---|
292 | n:p=1, d=S |
---|
293 | n:p=1, d=* |
---|
294 | n:j=0, d=M |
---|
295 | n:j=0, d=M |
---|
296 | n:j=1, d=M |
---|
297 | n:p=2, d=Gpart |
---|
298 | n:p=3, d=* |
---|
299 | n:p=3, d=* |
---|
300 | n:p=3, d=Gpart |
---|
301 | n:p=5, d=* |
---|
302 | n:p=5, d=* |
---|
303 | n:p=5 |
---|
304 | c:6, 4, -5.154 |
---|
305 | c:7, 0 |
---|
306 | c:15, 0 |
---|
307 | c:15, 2 |
---|
308 | c:15, 3 |
---|
309 | c:15, 9 |
---|
310 | c:15, 12 |
---|
311 | c:15, 14 |
---|
312 | |
---|
313 | If no delta fields are defined, they will be computed automatically. |
---|
314 | You can always delete existing delta values by using Joint::resetDelta(). |
---|
315 | Now we will change the second Part's z position by -0.2 and call resetDelta()... |
---|
316 | As you can see, Joint's delta fields have altered: |
---|
317 | |
---|
318 | p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214 |
---|
319 | p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814 |
---|
320 | p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034 |
---|
321 | p:5.053754302253353, -0.437766505067511, 2.5620556038997817, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942 |
---|
322 | p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034 |
---|
323 | p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199 |
---|
324 | j:0, 1, sh=1 |
---|
325 | j:1, 2, sh=1 |
---|
326 | j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952707, -0.16888325253375555, 1.2310278019498904, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347 |
---|
327 | j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091 |
---|
328 | j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354 |
---|
329 | n:p=0, d=S |
---|
330 | n:p=0, d=S |
---|
331 | n:p=0, d=S |
---|
332 | n:p=1, d=S |
---|
333 | n:p=1, d=S |
---|
334 | n:p=1, d=* |
---|
335 | n:j=0, d=M |
---|
336 | n:j=0, d=M |
---|
337 | n:j=1, d=M |
---|
338 | n:p=2, d=Gpart |
---|
339 | n:p=3, d=* |
---|
340 | n:p=3, d=* |
---|
341 | n:p=3, d=Gpart |
---|
342 | n:p=5, d=* |
---|
343 | n:p=5, d=* |
---|
344 | n:p=5 |
---|
345 | c:6, 4, -5.154 |
---|
346 | c:7, 0 |
---|
347 | c:15, 0 |
---|
348 | c:15, 2 |
---|
349 | c:15, 3 |
---|
350 | c:15, 9 |
---|
351 | c:15, 12 |
---|
352 | c:15, 14 |
---|
353 | |
---|
354 | Part references and delta fields are the 'core' properties of the Joint. |
---|
355 | The other properties are available from Joint::extraProperties() |
---|
356 | and at the moment are defined as follows: |
---|
357 | |
---|
358 | # id type name group (5 properties) |
---|
359 | 0. stif = 0.2165289256198347 f 0.0 1.0 1.0 stiffness Extra properties |
---|
360 | 1. rotstif = 0.2165289256198347 f 0.0 1.0 1.0 rotation stiffness Extra properties |
---|
361 | 2. vr = 1.0 f 0.0 1.0 1.0 red component Extra properties |
---|
362 | 3. vg = 1.0 f 0.0 1.0 1.0 green component Extra properties |
---|
363 | 4. vb = 1.0 f 0.0 1.0 1.0 blue component Extra properties |
---|
364 | |
---|
365 | They can be changed just like Part's extra properties: |
---|
366 | Change property #0 to random value from range [0..1] |
---|
367 | Current value of 'stif' (stiffness) is '0.2165289256198347' |
---|
368 | Setting new value... [ using ParamInterface::set() ] |
---|
369 | The value is now '0.592845' |
---|
370 | And after that we have this genotype: |
---|
371 | |
---|
372 | p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214 |
---|
373 | p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814 |
---|
374 | p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034 |
---|
375 | p:5.053754302253352, -0.437766505067511, 2.5620556038997813, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942 |
---|
376 | p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034 |
---|
377 | p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199 |
---|
378 | j:0, 1, sh=1 |
---|
379 | j:1, 2, sh=1 |
---|
380 | j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952707, -0.16888325253375555, 1.2310278019498904, sh=1, stif=0.592845, rotstif=0.2165289256198347 |
---|
381 | j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091 |
---|
382 | j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354 |
---|
383 | n:p=0, d=S |
---|
384 | n:p=0, d=S |
---|
385 | n:p=0, d=S |
---|
386 | n:p=1, d=S |
---|
387 | n:p=1, d=S |
---|
388 | n:p=1, d=* |
---|
389 | n:j=0, d=M |
---|
390 | n:j=0, d=M |
---|
391 | n:j=1, d=M |
---|
392 | n:p=2, d=Gpart |
---|
393 | n:p=3, d=* |
---|
394 | n:p=3, d=* |
---|
395 | n:p=3, d=Gpart |
---|
396 | n:p=5, d=* |
---|
397 | n:p=5, d=* |
---|
398 | n:p=5 |
---|
399 | c:6, 4, -5.154 |
---|
400 | c:7, 0 |
---|
401 | c:15, 0 |
---|
402 | c:15, 2 |
---|
403 | c:15, 3 |
---|
404 | c:15, 9 |
---|
405 | c:15, 12 |
---|
406 | c:15, 14 |
---|
407 | |
---|
408 | ############################################# |
---|
409 | ## ## |
---|
410 | ## N E U R O O B J E C T ## |
---|
411 | ## ## |
---|
412 | ############################################# |
---|
413 | (neuro # 1) |
---|
414 | Basic features of Neuro object are similar to those of Part and Joint. |
---|
415 | We can request a property list: |
---|
416 | |
---|
417 | # id type name group (10 properties) |
---|
418 | 0. p = 0 d -1 999999 -1 part ref# Connections |
---|
419 | 1. j = -1 d -1 999999 -1 joint ref# Connections |
---|
420 | 2. d = S s details Other |
---|
421 | 3. i = s info Other |
---|
422 | 4. Vstyle = neuro s 0 0 neuro vis_style Visual |
---|
423 | 5. getInputCount = 0 d input count Connections |
---|
424 | 9. classObject = null oNeuroClass neuron class Connections |
---|
425 | |
---|
426 | ...and extra properties (which are designed to be always valid and easy to change): |
---|
427 | |
---|
428 | # id type name group (0 properties) |
---|
429 | |
---|
430 | As usual, we will change something: |
---|
431 | Each neuron can have any number of inputs = weighted connections |
---|
432 | with other neurons. |
---|
433 | According to Neuro::getInputCount(), this one has 0 inputs. |
---|
434 | Standard API is provided for accessing those inputs (getInput(int)), |
---|
435 | adding inputs (addInput(Neuro*)) and removing them (removeInput(int)). |
---|
436 | |
---|
437 | |
---|
438 | The most unusual thing is 'details' field (d). |
---|
439 | It is something like separate object with its own set of properties. |
---|
440 | Currently the value of 'd' is 'S'. |
---|
441 | 'S' is the class name (Neuro::getClassName() == 'S') and means 'Smell'. |
---|
442 | Neuro::getClass() gives you information about basic characteristic |
---|
443 | of the class, that can be analyzed automatically. |
---|
444 | For the current object we can learn that it supports no inputs (getPreferredInputs()) and provides meaningful output signal (getPreferredOutput()==1). |
---|
445 | Instances of 'S' can be used in models having any shape types. |
---|
446 | Instances of 'S' can be attached to Parts. |
---|
447 | (This class does not have its own properties |
---|
448 | - Neuro::classProperties().getPropCount()==0) |
---|
449 | The class of this object can be changed using Neuro::setClassName() |
---|
450 | The following classes are available: |
---|
451 | [ data provided by Neuro::getClassInfo()->getProperties() ] |
---|
452 | |
---|
453 | # class description properties |
---|
454 | 0. N Neuron 4 |
---|
455 | 1. Nu Unipolar neuron [EXPERIMENTAL!] 4 |
---|
456 | 2. G Gyroscope 0 |
---|
457 | 3. Gpart Part Gyroscope 2 |
---|
458 | 4. T Touch 3 |
---|
459 | 5.Tcontact Touch contact 0 |
---|
460 | 6.Tproximity Touch proximity 3 |
---|
461 | 7. S Smell 0 |
---|
462 | 8. * Constant 0 |
---|
463 | 9. | Bend muscle 2 |
---|
464 | 10. @ Rotation muscle 1 |
---|
465 | 11. M Muscle for solids 2 |
---|
466 | 12. D Differentiate 0 |
---|
467 | 13. Fuzzy Fuzzy system [EXPERIMENTAL!] 4 |
---|
468 | 14. Sti Sticky [EXPERIMENTAL!] 0 |
---|
469 | 15. LMu Linear muscle [EXPERIMENTAL!] 1 |
---|
470 | 16. Water Water detector 0 |
---|
471 | 17.Energy Energy level 0 |
---|
472 | 18. Ch Channelize 0 |
---|
473 | 19. ChMux Channel multiplexer 0 |
---|
474 | 20. ChSel Channel selector 1 |
---|
475 | 21. Rnd Random noise 0 |
---|
476 | 22. Sin Sinus generator 2 |
---|
477 | |
---|
478 | Let's change the Neuro's class to 'N'... |
---|
479 | # id type name group (4 properties) |
---|
480 | 0. in = 0.8 f 0.0 1.0 0.8 Inertia (null) |
---|
481 | 1. fo = 0.04 f 0.0 999.0 0.04 Force (null) |
---|
482 | 2. si = 2.0 f -99999.0 99999.0 2.0 Sigmoid (null) |
---|
483 | 3. s = 0.0 f -1.0 1.0 0.0 State (null) |
---|
484 | Change property #2 to random value from range [-99999..99999] |
---|
485 | Current value of 'si' (Sigmoid) is '2.0' |
---|
486 | Setting new value... [ using ParamInterface::set() ] |
---|
487 | The value is now '43037.4' |
---|
488 | The final object description will be then: 'N:si=43037.4' |
---|
489 | And the full f0 genotype: |
---|
490 | |
---|
491 | p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214 |
---|
492 | p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814 |
---|
493 | p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034 |
---|
494 | p:5.053754302253352, -0.437766505067511, 2.5620556038997813, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942 |
---|
495 | p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034 |
---|
496 | p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199 |
---|
497 | j:0, 1, sh=1 |
---|
498 | j:1, 2, sh=1 |
---|
499 | j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952707, -0.16888325253375555, 1.2310278019498904, sh=1, stif=0.592845, rotstif=0.2165289256198347 |
---|
500 | j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091 |
---|
501 | j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354 |
---|
502 | n:p=0, d=S |
---|
503 | n:p=0, d=N:si=43037.4 |
---|
504 | n:p=0, d=S |
---|
505 | n:p=1, d=S |
---|
506 | n:p=1, d=S |
---|
507 | n:p=1, d=* |
---|
508 | n:j=0, d=M |
---|
509 | n:j=0, d=M |
---|
510 | n:j=1, d=M |
---|
511 | n:p=2, d=Gpart |
---|
512 | n:p=3, d=* |
---|
513 | n:p=3, d=* |
---|
514 | n:p=3, d=Gpart |
---|
515 | n:p=5, d=* |
---|
516 | n:p=5, d=* |
---|
517 | n:p=5 |
---|
518 | c:6, 4, -5.154 |
---|
519 | c:7, 0 |
---|
520 | c:15, 0 |
---|
521 | c:15, 2 |
---|
522 | c:15, 3 |
---|
523 | c:15, 9 |
---|
524 | c:15, 12 |
---|
525 | c:15, 14 |
---|
526 | |
---|
527 | |
---|
528 | ######### THE END ########### |
---|
529 | |
---|
530 | Hints: |
---|
531 | 1. You can redirect output: genomanipulation >filename.txt |
---|
532 | 2. Each run can yield different results and new behaviors, but you |
---|
533 | need to uncomment srand(time(0)) in genomanipulation.cpp. |
---|
534 | 3. This application will use custom genotype passed as |
---|
535 | a commandline parameter: genomanipulation "/*9*/FULU" |
---|
536 | |
---|
537 | |
---|