Following is the code (as of 2025 March 25) for the .is_blade method, which I suspect was motivated by page 533 of Geometric Algebra for Computer Science (Dorst, Fontijne, & Mann, 2007)
def is_blade(self) -> bool:
"""
True is self is blade, otherwise False
sets self.blade_flg and returns value
"""
if self.blade_flg is not None:
return self.blade_flg
else:
if self.is_versor():
if self.i_grade is not None:
self.blade_flg = True
else:
self.blade_flg = False
else:
self.blade_flg = False
return self.blade_flg
Consider the example b = e0 + e1 in the algebra G(1,1). The null vector b is_ a 1-blade. Within the code, with b taking the place of self, b.is_versor() will evaluate as False, so b.blade_flg will be set to False, so b.is_blade() will return False even though b is in fact a blade. An example of a 2-blade which is not a versor is B = (e0 + e1)^e2 in the algebra G(1,2).
Upshot: As currently written, the multivector method .is_blade() will fail for certain multivectors.
As pointed out on page 532 of GACS , whether a multivector is a versor depends upon the scalar product ("metric") used to generate the geometric algebra. Whether a multivector is a blade is independent of the scalar product, however, as the outer product is not a metric concept.
Following is the code (as of 2025 March 25) for the .is_blade method, which I suspect was motivated by page 533 of Geometric Algebra for Computer Science (Dorst, Fontijne, & Mann, 2007)
Consider the example
b = e0 + e1in the algebra G(1,1). The null vectorbis_ a 1-blade. Within the code, withbtaking the place ofself,b.is_versor()will evaluate asFalse, sob.blade_flgwill be set toFalse, sob.is_blade()will returnFalseeven thoughbis in fact a blade. An example of a 2-blade which is not a versor isB = (e0 + e1)^e2in the algebra G(1,2).Upshot: As currently written, the multivector method
.is_blade()will fail for certain multivectors.As pointed out on page 532 of GACS , whether a multivector is a versor depends upon the scalar product ("metric") used to generate the geometric algebra. Whether a multivector is a blade is independent of the scalar product, however, as the outer product is not a metric concept.